我有一个接收XML结构的字符串。 其中一个元素包含汉字。 为了将XML转换为json,我使用json_encode()。中文字符的输出是乱码。
我尝试使用mb_detect_encoding检查编码,甚至尝试了列出的解决方案here。
我用google搜索了很多其他资源,但似乎没有一个能解决我的问题。任何帮助深表感谢。
代码:
<?php
$str = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<rootjson>
<widget>
<debug>on</debug>
<text>
<data>點擊這裡</data>
<size>36</size>
<alignment>center</alignment>
</text>
</widget>
</rootjson>
XML;
$xml = simplexml_load_string($str);
if ($encoding = mb_detect_encoding($xml, 'UTF-8', true)) echo 'XML is utf8'; //It finds it to be utf8
$json = json_encode($xml, JSON_PRETTY_PRINT);
if ($encoding = mb_detect_encoding($json, 'UTF-8', true)) echo 'Json is utf8'; //It also finds it to be utf8
var_dump($json);
?>
输出:
{
"widget": {
"debug": "on",
"text": {
"data": "\u9ede\u64ca\u9019\u88e1",
"size": "36",
"alignment": "center"
}
}
}
我不认为我可以信任mb_detect_encoding,因为它告诉$ xml和$ json都是UTF-8编码的。点击这里的中文字符串现在显示为
\ u9ede \ u64ca \ u9019 \ u88e1