PHP SimpleXML_load_string使用德语字符失败(变音符号)

时间:2014-06-19 17:31:28

标签: php xml character-encoding simplexml

我遇到使用simplexm_load_string解析xml字符串的问题。 对于它,我无法弄清楚我在这个脚本出错了。

<?php 
header('Content-Type: text/html; charset=utf-8');
$string = <<<XML
<?xml version='1.0' encoding='UTF-8'?>
<document>
    <title>ÄÖÜ</title>
</document>
XML;

$xml = simplexml_load_string($string);

print_r($xml);
?>

2 个答案:

答案 0 :(得分:1)

  

对于它,我无法弄清楚我在这个脚本出错的地方。

因为你没有将PHP文件保存为UTF-8,所以你不能在那里使用字符串:

$string = <<<XML
<?xml version='1.0' encoding='UTF-8'?>
<document>
    <title>ÄÖÜ</title>
</document>
XML;

以UTF-8编码。将文件保存为UTF-8并且可以正常工作。

如果您不确定,您也可以采用不同的方式:

<?php 
header('Content-Type: text/html; charset=utf-8');
$string = <<<XML
<?xml version='1.0' encoding='UTF-8'?>
<document>
    <title>\xC3\x84\xC3\x96\xC3\x9C</title>
</document>
XML;

$xml = simplexml_load_string($string);

print_r($xml);

这是通过以PHP的二进制表示法指定扩展窗格中的二进制字节,因此它们不受八位字节部分中不同编码的影响。这将非常强大。

但请考虑保存您的PHP文件UTF-8编码。这通常是网络开发的最佳实践。

演示:https://eval.in/private/76c12983305e81

答案 1 :(得分:0)

尝试使用:

simplexml_load_string(utf8_encode($string))