JSON 解码中的阿拉伯字符

2022-08-30 20:47:08
$test = json_encode('بسم الله');
echo $test;

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

您可以在Youtube上看到阿拉伯字符正确显示。这可能是我的错误吗?

提示:我正在开发一个API<这个例子只是为了澄清。


答案 1

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

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

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

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

答案 2

这是 UTF-8 字符串的正确 JSON 编码版本。无需更改它,它表示正确的字符串。JSON 中的字符可以通过这种方式进行转义。

如果需要,JSON 可以直接表示 UTF-8 字符。从 PHP 5.4 开始,您可以选择设置标志以生成原始 UTF-8 字符串:JSON_UNESCAPED_UNICODE

json_encode($string, JSON_UNESCAPED_UNICODE)

但这只是一种偏好,没有必要。


推荐