MySQL 数据库中特殊字符的 json_encode
我需要将 MySQL 查询的结果编码为 JSON 格式。
我的数据库采用 utf8_unicode_ci
编码。
特别是,我的数据库中存储了一些特殊字符(例如 €),当我应用 PHP 函数 json_encode
时,这些字符会生成空值。
我该如何解决这个问题?
I need to encode a result from a MySQL query to JSON format.
My database is in the encoding utf8_unicode_ci
.
In particular, I have some special chars (for example, €) stored in my database which produce a null value when I apply the PHP function json_encode
.
How can I fix this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我的盲目猜测是你的MySQL数据库连接没有设置为UTF-8,这导致即使源数据库是UTF-8,也会返回ISO-8859-1字符。
这些字符会破坏
json_encode()
因为它们在json_encode()
所期望的 UTF-8 字符集中无效。您可能需要将连接编码设置为 UTF-8。如何执行此操作取决于您使用的库。
在
mysql_*
系列函数中,一种方法是MySQL 中的 or > 5.0.7,新
My blind guess is that your MySQL database connection is not set to UTF-8, which leads to ISO-8859-1 characters being returned even if the source database is UTF-8.
Those characters will break
json_encode()
because they are invalid in the UTF-8 character set, whichjson_encode()
expects.You will probably have to set your connection encoding to UTF-8. How to do that depends on the library you are using.
In the
mysql_*
family of functions, one way isor in MySQL > 5.0.7, the new