将JSON转换为UTF-8字符串。

4

我想把一个JSON对象转换成字符串。当我使用 json_encode 时,我得到了一个字符串,但是全部都是十六进制字母。我想将它转换为UTF-8编码,也就是说,我想看到字符。怎么做呢?

4个回答

7

我使用json_encode来存储包括阿拉伯字符在内的数据到MySQL字段中。

它会将阿拉伯字符以HEX形式存储在数据库中,例如:

u0644 u063...

这是不正确的。你必须确保将json_encode包装在mysql_escape_string()中。

这将确保数据以以下方式放入MySQL中:

\u0644\u063...

然后,当你使用json_decode时,它将把HEX字符串转换为UTF-8,并正确输出。


4
您可以尝试向json_encode()传递一个选项:
json_encode ( $value, JSON_UNESCAPED_UNICODE );
JSON_UNESCAPED_UNICODE选项仅适用于PHP版本5.4.0及更高版本。
谢谢。

1
我正在使用上述提到的函数,但字符是十六进制而不是UTF-8。 - nisnis
OP应该使用哪些选项来获得他想要的输出? - slashingweapon
非常感谢,它可以工作。 - Androidbirt

1

是的,我知道,但我想在屏幕上显示字符给用户看。 - nisnis

1

你正在寻找的是函数json_decode,它可以将JSON字符串转换为UTF8。

这里有一个阿拉伯语单词的例子。

$re = json_encode('لغة عربية'); 
echo $re ; 
$dd = json_decode($re);
echo $dd ; 
die;

它的输出结果为: "\u0644\u063a\u0629 \u0639\u0631\u0628\u064a\u0629" لغة عربية

更多示例请参见此处 http://php.net/manual/en/function.json-decode.php


请确保您的 JSON 数据有效,可以参考 json.org 进行检查,或者与我们分享。 - tawfekov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接