Php 数组到JSON编码希伯莱字符的奇怪行为

Php 数组到JSON编码希伯莱字符的奇怪行为,php,mysql,json,encoding,utf-8,Php,Mysql,Json,Encoding,Utf 8,故事是这样的,我试图将一个JSON字符串保存到我的数据库中,但每个希伯来语字母都转换为“\u05d4”,例如,希伯来语中的字母“He”(ה) 英语编码正确 我做了研究,发现这种编码是JAVA或C/C++字符编码,但我找不到一种方法将其作为常规UTF-8字符存储在数据库中以便于编辑 获取数据并将其显示在我的页面上效果很好(应该是希伯来语),但无论我尝试使用什么函数来解决这个问题,数据库中的数据都是经过编码的 示例: \u05d0\u05d9\u05e4\u05d4 \u05ea\u05e8\u05

故事是这样的,我试图将一个JSON字符串保存到我的数据库中,但每个希伯来语字母都转换为“\u05d4”,例如,希伯来语中的字母“He”(ה)

英语编码正确

我做了研究,发现这种编码是JAVA或C/C++字符编码,但我找不到一种方法将其作为常规UTF-8字符存储在数据库中以便于编辑

获取数据并将其显示在我的页面上效果很好(应该是希伯来语),但无论我尝试使用什么函数来解决这个问题,数据库中的数据都是经过编码的

示例:

\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()的问题还是我还不知道的其他问题

编辑

利用阿尔瓦罗·冈萨雷斯和塔努埃尔·马特吉提供的信息,我找到了我想要的解决方案:
mysql\u real\u escape\u字符串(json\u encode($pinfo,json\u UNESCAPED\u UNICODE))


希望有帮助

\u05d4
是JSON中完全有效的转义序列。它对应于(希伯来字母He)。您的JSON输出中显然没有任何错误—我想您只是误读了。

我使用了
JSON\u encode($x)
,没有第二个参数。和
json\u解码($y,TRUE)
。考虑这个组合。

如果所说的
mres
,您的意思是
mysql\u real\u escape\u string()
,请始终使用转义函数


但不要使用mysql*;切换到
PDO
mysqli.*

结果没有问题,当您再次解码时,您将得到您想要的准确结果。

您使用的是mysql还是mysqli?请分享完整的代码。你能解释一下为什么在那里使用json_encode()吗?这是正确的行为。您的希伯来文字符正在转义到unicode块。如果你使用
json\u decode()
它们应该被再次解码。我使用的是mysqli,代码很长,并不相关。。。我使用JSON_ENCODE将许多变量数据以文本形式保存到数据库中,这样就不需要在数据库中创建数百列。我能够通过您的帮助找到一个解决方案,使用上面的解决方案进行编辑!谢谢非常感谢你的回答!利用您提供的信息,我找到了解决问题的方法:
mres(json\u encode($pinfo,json\u UNESCAPED\u UNICODE))
我会说您一开始就没有问题……)正确,我会说一个解决我不便的办法!感谢您的回答,但我写道,为了在PhpMyAdmin上编辑方便,我需要常规(非编码)文本