【问题标题】:json_encode of special chars from a MySQL database来自 MySQL 数据库的特殊字符的 json_encode
【发布时间】:2011-08-12 21:23:02
【问题描述】:

我需要将 MySQL 查询的结果编码为 JSON 格式。

我的数据库是编码utf8_unicode_ci

特别是,我的数据库中存储了一些特殊字符(例如 €),当我应用 PHP 函数 json_encode 时会产生空值。

我该如何解决这个问题?

【问题讨论】:

标签: php mysql json utf-8


【解决方案1】:

我的盲目猜测是你的 MySQL 数据库连接没有设置为 UTF-8,导致即使源数据库是 UTF-8 也会返回 ISO-8859-1 字符。

Those characters will break json_encode() 因为它们在 json_encode() 所期望的 UTF-8 字符集中无效。

您可能必须将连接编码设置为 UTF-8。如何做到这一点取决于您使用的库。

mysql_* 系列函数中,一种方法是

mysql_query("SET names utf8;");

或在 MySQL > 5.0.7 中,新的

mysql_set_charset("utf8");

【讨论】:

  • 谢谢。我尝试使用函数“mysql_set_charset”设置字符集,但现在他截断了特殊字符
  • @Dany 你试过第一个吗?
  • 是的,我试试看!我也尝试应用 php 函数 iconv 但它会截断特殊字符
猜你喜欢
  • 2014-01-08
  • 2017-02-27
  • 2015-07-08
  • 1970-01-01
  • 2018-07-16
  • 1970-01-01
  • 2017-07-12
  • 2016-12-27
  • 2020-08-30
相关资源
最近更新 更多