使用希伯来字符编码奇怪行为的JSON数组

时间:2016-03-21 10:46:20

标签: php mysql json encoding utf-8

故事如此,我正在尝试将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))

希望它有所帮助!

3 个答案:

答案 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_*;切换到PDOmysqli_*

答案 2 :(得分:0)

结果没有错,当你再次解码时,你会得到你想要的结果......