Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我会看到“á;”在向屏幕写入时是否使用空格(编码问题)?_Php_Xml_Perl_Encoding - Fatal编程技术网

Php 为什么我会看到“á;”在向屏幕写入时是否使用空格(编码问题)?

Php 为什么我会看到“á;”在向屏幕写入时是否使用空格(编码问题)?,php,xml,perl,encoding,Php,Xml,Perl,Encoding,我完全被编码问题迷住了,我不知道发生了什么,到底是什么问题,以及如何解决它 基本上,我只是尝试从Zip文件中读取HTML文件,解析它,然后将其输出为XML。现在,我从解析器中得到的文本发生了一些奇怪的事情 解析HTML时,只有在向屏幕写入时,才会得到空间,而不是空间。如果我把它保存在一个变量中并写入一个文件中,它在文件中看起来很好。然而,尽管它在XML中看起来是正确的,但它有一些问题,我的PHP解析器无法解析该XML,IE似乎也不喜欢它 我必须首先mb_转换_编码($xmlcontent,“AS

我完全被编码问题迷住了,我不知道发生了什么,到底是什么问题,以及如何解决它

基本上,我只是尝试从Zip文件中读取HTML文件,解析它,然后将其输出为XML。现在,我从解析器中得到的文本发生了一些奇怪的事情

解析HTML时,只有在向屏幕写入时,才会得到空间,而不是空间。如果我把它保存在一个变量中并写入一个文件中,它在文件中看起来很好。然而,尽管它在XML中看起来是正确的,但它有一些问题,我的PHP解析器无法解析该XML,IE似乎也不喜欢它

我必须首先
mb_转换_编码($xmlcontent,“ASCII”)
知道我的问题是什么吗

  • 使用Perl从
    .tar.gz
    文件中提取HTML

    my $tar = Archive::Tar->new;
    $tar->read("myfile.tar.gz");
    $tar->extract_file('index.html', 'output.html');
    
  • 加载HTML,这就是它开始变得古怪的地方,我得到的输出像
    Numberáofásourceálines

    my $tree = HTML::TreeBuilder->new;
    $tree->parse_file('output.html') or die $!;
    $tree->elementify;
    
  • 写入XML

    my $output = new IO::File(">output.xml");
    my $writer = new XML::Writer(OUTPUT => $output, DATA_MODE => 1,DATA_INDENT => 2);
    

  • 如果将其写入文件时看起来是正确的,而将其写入终端时看起来是错误的,则听起来您的终端预期的编码是错误的。检查您的终端设置。”


    另外,请参见Jon Rockway对的回答。使用编码时,必须将输入转换为正确的编码,并将输出转换为正确的编码。查看数据的所有内容都需要知道您使用的是哪种编码。

    我想我只是通过在解析数据之前在html上处理它来修复它,感谢所有伟大的指针

    s/\&nbsp\;/ /g;
    

    您的数据是多字节unicode吗?这个奇怪的角色闻起来可能是。使用正确的字符编码。您首先需要了解输入数据的编码。然后将其转换为UTF-8。如何确定编码?该文件是由工具自动生成的,我无法控制它,我只能处理它。HTML是否有定义所用字符集的元标记?通常会。显示HTML文件。将它原封不动地上传到某个地方,或者提供它的十六进制转储。