【问题标题】:RSS reader Error : Input is not proper UTF-8 when use simplexml_load_file()RSS 阅读器错误:使用 simplexml_load_file() 时输入不正确的 UTF-8
【发布时间】:2011-03-16 12:21:52
【问题描述】:

我正在使用 simplexml_load_file 方法来解析来自外部源的提要。

我的代码是这样的

$rssFeed['DAILYSTAR'] = 'http://www.thedailystar.net/latest/rss/rss.xml'; $rssParser = simplexml_load_file($url);

输出如下:

警告:simplexml_load_file() [function.simplexml-load-file]:http://www.thedailystar.net/latest/rss/rss.xml:12:解析器错误:输入不正确的 UTF-8,表示编码!字节:第 39 行 C:\xampp\htdocs\googlebd\index.php 中的 0x92 0x73 0x20 0x48

最终因致命错误而停止。主要问题是该站点的字符编码是 ISO-8859-1,而不是 UTF-8。

我可以使用这种方法(SimpleXML API)读取这个吗? 如果没有,那么还有其他方法可用吗? 我已经通过谷歌搜索但没有答案。我应用的每个方法都返回此错误。

谢谢, 皮疹

【问题讨论】:

    标签: utf-8 rss character-encoding


    【解决方案1】:

    我们遇到了同样的问题并使用utf8_encode 将编码从 ISO-8859-1/latin-1 更改为 UTF-8 并克服了错误。

    $contents = file_get_contents($url);
    simplexml_load_string(utf8_encode($contents));
    

    【讨论】:

      【解决方案2】:

      好吧,好吧,当我使用 Python 检索此内容时,我得到以下信息:

      '\n<rss version="2.0" encoding="ISO-8859-1">\n [...]
      <description>The results of this year\x92s Higher Secondary Certificate 
      

      现在它它是 ISO-8859-1,但 \x92 不在该字符集中,而是在 Windows-1252 中用作撇号的结束单引号。所以页面会抛出一个编码错误,根据 XML 规范,客户端应该是“严格的”而不是修复错误。

      您可以检索它,并以某种方式过滤掉非 ISO-8859-1 字符,或者更好的是,在将结果传递给 RSS 解析器之前使用 mb-convert-encoding() 转换编码。

      哦,如果您想将结果合并到 UTF-8 页面中,您可能已经将所有内容都转换为 UTF-8,尽管这是英语,如果所有结果都显示为,甚至可能不需要任何不同的字符编码毕竟是ASCII。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-31
        • 1970-01-01
        • 2019-05-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多