【问题标题】:How can I parse xml file that is not in utf-8 in PHP with simpleXML?如何使用 simpleXML 解析 PHP 中不在 utf-8 中的 xml 文件?
【发布时间】:2011-07-04 15:19:13
【问题描述】:

我在 PHP 中使用 simpleXML 来获取 xml 文件。 问题是 xml 文件的编码不在 utf-8 中。它在 euc-kr 中。

<?xml version="1.0" encoding="euc-kr" ?> 

所以,如果我使用 simpleXML 来获取数据,那么不是英文的文本就会崩溃。 (但它正确打印结构和所有内容......它只是韩语崩溃中的文本) 无论如何我可以为 simpleXML 设置编码吗?

或者无论如何我可以将 xml 文件更改为使用 utf-8 编码??

我只是尝试使用 str_replace('euc-kr','utf-8',$data) 更改单词,但这似乎并没有更改原始文件类型。因为它会导致类似的错误

Input is not proper UTF-8, indicate encoding ! Bytes: 0xB0 0xB3 0xC6 0xF7

我该如何解决这个问题?顺便说一句,我无权更改xml文件的内容

【问题讨论】:

    标签: php xml encoding utf-8 simplexml


    【解决方案1】:

    假设您想获得相同的字符集,我会使用 DomDocument。但是如果你想要simplexml,你可以通过DomDocument加载它然后转换成simplexml:

    $dom = new DomDocument('1.0', 'euc-kr');
    $dom->load('file.xml'); // or loadXml($string);
    $simple = simplexml_import_dom($dom->documentElement);
    

    然后当你完成后,只需$dom-&gt;save($filename);...

    【讨论】:

      【解决方案2】:

      我刚刚找到了解决办法。

      $data = str_replace('euc-kr','utf-8',$data);
      $data = iconv('euc-kr', 'utf-8', $data);
      

      上面的代码已经解决了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-14
        • 2020-01-20
        • 2015-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多