如何使用simpleXML解析PHP中不在utf-8中的xml文件?

时间:2011-02-25 22:01:38

标签: php xml encoding utf-8 simplexml

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

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

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

OR无论如何我可以使用utf-8 ??

将xml文件更改为编码

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

这样的错误
Input is not proper UTF-8, indicate encoding ! Bytes: 0xB0 0xB3 0xC6 0xF7

如何解决此问题?顺便说一下,我没有权限更改xml文件的内容

2 个答案:

答案 0 :(得分: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->save($filename); ...

答案 1 :(得分:0)

我刚刚找到了解决方案。

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

以上代码解决了这个问题。