json_encode和波斯语?

时间:2011-09-15 19:31:29

标签: php character-encoding json

我正在使用json_encode在数据库中插入一个值数组(如:<input name="ok[]">...,不知道为什么它插入了["\u0633\u06cc\u062f \u0633\u0639\u06cc\u062f \u062f\u0627\u062f\u0627\u0634\u0632\u0627\u062f\u0647"]之前插入的波斯语单词:{{ {1}}。

سید سعید داداشزاده输出数据库(select * from tabla ...)如下:json_encode

在我的(数据库)表中,此行的排序是[\"\\u0633\\u06cc\\u062f \\u0633\\u0639\\u06cc\\u062f \\u062f\\u0627\\u062f\\u0627\\u0634\\u0632\\u0627\\u062f\\u0647\"]"

我如何处理utf8_general_ci波斯语print("output of database")

4 个答案:

答案 0 :(得分:4)

json_encode使用\uXXXX表示法对所有非ascii字符进行编码。这不是问题,因为任何json解码器和javascript都能识别这种表示法:

json_decode('["\u0633\u06cc\u062f \u0633\u0639\u06cc\u062f \u062f\u0627\u062f\u0627\u0634\u0632\u0627\u062f\u0647"]');
// array('سید سعید داداشزاده')

但是,似乎从数据库中获取的字符串是转义的。在插入数据库之前,它已被双重转义,或者您启用了magic_quotes_runtime。在使用stripslashes之前,在json字符串上使用json_decode来取消它:

json_decode(stripslashes('[\"\\u0633\\u06cc\\u062f \\u0633\\u0639\\u06cc\\u062f \\u062f\\u0627\\u062f\\u0627\\u0634\\u0632\\u0627\\u062f\\u0647\"]'));

答案 1 :(得分:0)

json_encode正在逃避每个角色。对字符串使用stripslashes()以删除每个字符的额外斜杠。

答案 2 :(得分:0)

你可以使用这个要点:

https://gist.github.com/MahdiMajidzadeh/88407f4c33a294cae29ed1493332d7c0

:)))))

答案 3 :(得分:0)

只需使用

json_encode($array,JSON_UNESCAPED_UNICODE)

做得好!