故事如此,我正在尝试将JSON字符串保存到我的数据库中,但每个希伯来字母都转换为“\ u05d4”,例如,希伯来语(ה)中的字母“He”。
英文编码正确
我已经完成了我的研究,发现这个编码是JAVA或C / C ++字符编码,但是我找不到一种方法将它作为常规UTF-8字符存储在我的数据库中以方便编辑... < / p>
获取数据并将其显示在我的页面上运行良好(希伯来语,应该如此),但无论我试图解决什么功能,我的数据库中的数据都被编码......
示例:
\u05d0\u05d9\u05e4\u05d4 \u05ea\u05e8\u05e6\u05d4 \u05e9\u05d4\u05e9\u05dd \u05d9\u05de\u05d5\u05e7\u05dd?
应该是:
איפה תרצה שהשם ימוקם?
正如您所看到的,编码也会占用大量额外空间,而且从phpMyAdmin编辑是不可能的......
我保存数据的功能:
mysql_real_escape_string(json_encode($pinfo))
而$ pinfo包含数组中的所有数据(以utf-8编码)
JSON_ENCODE()或其他我完全不知道的问题吗?
修改
使用ÁlvaroGonzález和Tanuel Mategi提供的信息,我能够找到我追求的解决方案:
mysql_real_escape_string(json_encode($pinfo, JSON_UNESCAPED_UNICODE))
希望它有所帮助!
答案 0 :(得分:2)
\u05d4
是JSON中完全有效的转义序列。它对应于U+05d4 Unicode character(希伯来字母He)。您的JSON输出中显然没有任何问题 - 我认为您只是误读了format documentation。
答案 1 :(得分:0)
我使用json_encode($x)
,没有第二个arg。并json_decode($y, TRUE)
。考虑一下这种组合。
如果按mres
表示mysql_real_escape_string()
,则始终使用转义功能。
但不使用mysql_*
;切换到PDO
或mysqli_*
。
答案 2 :(得分:0)
结果没有错,当你再次解码时,你会得到你想要的结果......