This question already has an answer here:
Reference: Why are my “special” Unicode characters encoded weird using json_encode?

(1个答案)


4年前关闭。



$test = json_encode('بسم الله');
echo $test;

作为此代码的结果,输出为:"\u0628\u0633\u0645 \u0627\u0644\u0644\u0647",而它应该类似于“بسمالله”。阿拉伯字符是通过JSON编码而编码的,而在Youtube API上则不是这样:
http://gdata.youtube.com/feeds/api/videos/RqMxTnTZeNE?v=2&alt=json

您可以在YouTube上看到阿拉伯字符正确显示。我可能会犯什么错误?

提示:我正在使用API​​,该示例仅是为了澄清。

最佳答案

"\u0628\u0633\u0645 \u0627\u0644\u0644\u0647""بسم الله"在JSON中等效。

PHP仅默认使用Unicode转义,而不是多字节字符的文字。

您可以使用JSON_UNESCAPED_UNICODE进行其他指定(前提是您使用的是PHP 5.4或更高版本)。

json_encode('بسم الله', JSON_UNESCAPED_UNICODE);

09-25 21:03