在数据库中插入一个值数组(如:cc),不知道它为什么将波斯语单词插入为cc。
json_encode输出的数据库(<input name="ok[]">...)为:["\u0633\u06cc\u062f \u0633\u0639\u06cc\u062f \u062f\u0627\u062f\u0627\u0634\u0632\u0627\u062f\u0647"]
在我的表(数据库的)中,此行的排序规则是سید سعید داداشزاده
我该怎么处理波斯语单词?

最佳答案

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\"]'));

08-06 17:55