我有一些JSON需要解码、修改,然后重新编码,不能弄乱任何字符。如果JSON字符串中有一个Unicode字符,它将无法解码。我不知道为什么,因为json.org说一个字符串可以包含:除“-”、“\”或控制字符之外的任何Unicode字符。但在Python中也不起作用。
{"Tag":"Odómetro"}
我可以使用 utf8_encode,这将允许字符串使用 json_decode 解码,但是该字符会变成其他字符。以下是 print_r 结果数组的输出。两个字符。
[Tag] => Odómetro
当我再次对数组进行编码时,字符被转义为ascii码,这符合json规范:
"Tag"=>"Od\u00f3metro"
有没有方法可以将其还原?json_encode没有这样的选项,utf8_encode似乎也不起作用。
编辑我看到json_encode有一个unescaped_unicode选项。但是它并没有按预期工作。天啊,这只在php 5.4上才有。我必须使用一些正则表达式,因为我只有5.3。
$json = json_encode($array, JSON_UNESCAPED_UNICODE);
Warning: json_encode() expects parameter 2 to be long, string ...
JSON_UNESCAPED_UNICODE
是 PHP 5.4 中新增的(也就是说,它还不存在)。 - John Flatnessutf8_encode
,因为它是设计用于将ISO 8859-1转换为UTF-8。这个字符串来自数据库、字符串字面量还是其他来源?(提出所有这些问题的原因是:json_encode
专门构建为仅与UTF-8字符串一起使用)。 - John Flatness