强制DOMXpath-php-返回utf-8结果

强制DOMXpath-php-返回utf-8结果,php,encoding,utf-8,domdocument,domxpath,Php,Encoding,Utf 8,Domdocument,Domxpath,首先,我知道这个问题以前有过信号,但解决方案不适用于我的情况 这是网址 页面上说它的字符集是ISO-8859-1,但不能是,因为上面有欧元符号。Chrome浏览器将其标识为windows-1252 我曾经 $file = str_replace('charset=iso-8859-1', 'charset=utf-8', $file); $file = iconv('windows-1252', 'UTF-8', $file); 保存它,我的文本编辑器说它是UTF-8编码的 然后我用 $do

首先,我知道这个问题以前有过信号,但解决方案不适用于我的情况

这是网址

页面上说它的字符集是ISO-8859-1,但不能是,因为上面有欧元符号。Chrome浏览器将其标识为windows-1252

我曾经

$file = str_replace('charset=iso-8859-1', 'charset=utf-8', $file);
$file = iconv('windows-1252', 'UTF-8', $file);
保存它,我的文本编辑器说它是UTF-8编码的

然后我用

$doc2->loadHTML($file);
$doc2->saveHTMLFile('ggg.html');
而且我的文本编辑器说它是UTF-8编码的 但是这个文件说,ggg.html实际上是ASCII

尽管如此,在它里面的东西看起来和预期的一样,尽管它们使用的是html编码,比如Pré或proprieté

xpath查询返回垃圾数据,如 而不是Pré是Prà 而不是欧元

我已经尝试过这里建议的解决方案,但没有成功
我认为这是关于php如何处理libxml的问题,因为在ruby中,它可以完美地工作——也可以通过Urb gem使用libxml——问题是我的客户需要一个php脚本,我快速浏览了一下,从我的角度看,该站点输出了混合编码

它是
iso-8859-1
,带有一个混合的
windows-1252
符号(我想)。 这就是为什么浏览器会感到困惑(但不知怎么处理)

除了让他们修复他们的网站或者做一些其他的修改之外,我不知道你会怎么做


Préis PrÃ
中断是因为您试图对
windows-1252->utf8
转换实际上是
iso-8859-1
的东西(我想)。

xpath查询返回垃圾数据,比如代替Préis Pré而不是欧元is–你在哪里看到这一点?在网络浏览器中?您是否“通知”浏览器您的文档是utf-8编码的?不在浏览器中。数据将保存在数据库中。我只是将数组和结果打印到一个文件中。我的文本编辑器说这个转储文件是ASCII,而不是我所期望的UTF-8。如果有人能从中做出一些东西,我已经做了很多很多事情。我确实在某些情况下获得了正确的Pré,但仍然存在其他问题,正如您在dropbox文件中看到的那样。我需要一个解决方案,一切都是它应该是什么样子,正如我的ruby脚本所展示的那样,这是可能的——而且,在ruby中,非常容易找到ggg.html文件,这就是libxml内部解析DOM的方式,看起来不错!但是是ASCII,而不是UTF-8,这就是Xpath返回文本数据而不是HTML的问题所在,因此ASCII不能表示它。我如何强制文档在内部将文档视为UTF-8,因为它99%的时间都是这样做的?为什么在这种情况下它不将文档视为UTF-8?ggg.html文件是带有HtmlEntes的ASCII文件<代码>Xpath返回文本数据,而不是HTML,
什么?-它不能将其视为utf-8,因为源代码具有混合编码,您不能将其视为任何东西,除非它已损坏。(除非我的答案是错的)