我正在使用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")
?
答案 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)
答案 3 :(得分:0)
只需使用
json_encode($array,JSON_UNESCAPED_UNICODE)
做得好!