【发布时间】:2016-07-07 20:08:34
【问题描述】:
所以故事是这样的,我正在尝试将 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() 的问题还是我还不知道的其他问题?
编辑
使用 Álvaro González 和 Tanuel Mategi 提供的信息,我找到了我想要的解决方案:
mysql_real_escape_string(json_encode($pinfo, JSON_UNESCAPED_UNICODE))
希望对你有帮助!
【问题讨论】:
-
你用的是mysql还是mysqli?请分享完整代码。
-
你能解释一下为什么你在那里使用 json_encode() 吗?
-
这是正确的行为。您的希伯来语字符正在转义为 unicode 块。 en.wikipedia.org/wiki/Unicode_block。如果你使用
json_decode(),它们应该被再次解码。 -
我正在使用 mysqli,并且代码很长而且并不真正相关......我正在使用 JSON_ENCODE 将许多变量数据作为文本保存到数据库中,所以我不需要创建我的数据库中有数百列。我能够使用您的帮助找到解决方案,并使用上面的解决方案进行编辑!谢谢!
标签: php mysql json encoding utf-8