使用PHP json_encode时按原样输出阿拉伯文(Unicode)字符

使用PHP json_encode时按原样输出阿拉伯文(Unicode)字符,php,json,unicode,arabic,Php,Json,Unicode,Arabic,我使用json_encode对阿拉伯语(Unicode)文本进行编码,即将每个字母转换为\u0627\u0644\u0633\u064a\u0627\u0631\u0627\u062a这样的字符串 这(对我来说)很烦人,并且极大地增加了输出的大小 我需要一个简单的解决方案来正确地输出文本,而不将其转换为上面所述的奇怪的长字符 我的输入数组是: $array = array(1 => 'اللغة', 2 => 'العربية', 3 => 'تحوّل إلى', 4 =&g

我使用json_encode对阿拉伯语(Unicode)文本进行编码,即将每个字母转换为\u0627\u0644\u0633\u064a\u0627\u0631\u0627\u062a这样的字符串

这(对我来说)很烦人,并且极大地增加了输出的大小

我需要一个简单的解决方案来正确地输出文本,而不将其转换为上面所述的奇怪的长字符

我的输入数组是:

$array = array(1 => 'اللغة', 2 => 'العربية', 3 => 'تحوّل إلى', 4 => 'جيسون');
我从json_encode获得的输出:

{"1":"\u0627\u0644\u0644\u063a\u0629","2":"\u0627\u0644\u0639\u0631\u0628\u064a\u0629","3":"\u062a\u062d\u0648\u0651\u0644 \u0625\u0644\u0649","4":"\u062c\u064a\u0633\u0648\u0646"}
我希望结果是:

{"1":"اللغة","2":"العربية","3":"تحوّل إلى","4":"جيسون"}

您请求的是JSON,因此得到的是JSON:JSON中的某些unicode字符应该以如下方式表示:


除此之外,现在这几个字节已经无关紧要了。

在JSON\u encode()中使用JSON\u UNESCAPED\u UNICODE

我明白你为什么这么做了,并感谢你的努力。但不幸的是,这不是真正的问题(而是某种知识库项目),因此对stackoverflow的Q&A格式没有用处。如果您可以将其重新格式化为一个问题,您可以在一段时间后自行回答(或者可能有人提出了另一个更好的主意),您正在寻找
JSON\u UNESCAPED\u UNICODE
选项。从PHP 5.4开始提供,或者使用upgradephp的版本17(测试向上转换)。这似乎是一个真正的问题,因为它有一个真正的答案(使用
JSON\u UNESCAPED\u UNICODE
),并且预期的输出实际上是有效的JSON。(PHP显然对字符转义过于热心。)我完全同意
JSON\u UNESCAPED\u UNICODE
(但请注意,这只是PHP5.4+)。冒着得罪版主的风险,我必须说,我完全不同意“现在这几个字节真的不重要了”。优化似乎是一门失传的艺术。是的,我知道RFC说字符需要像\u0123数字那样编码,但如果我使用相同的字符串,它仍然可以正常工作。一个很好的解决方案建议开发人员使用PHP5.3模拟即将推出的JSON_UNESCAPED_UNICODEWell,很抱歉,阿拉伯语字符是有效的。引用您提到的同一文档:“除必须转义的字符外,所有Unicode字符都可以放在引号内:引号、反索利多卡因和控制字符(U+0000到U+001F)。”