【问题标题】:Handling special characters in json_encode处理 json_encode 中的特殊字符
【发布时间】:2017-07-12 00:41:35
【问题描述】:

在我的数据库中,有许多特殊字符,例如(İstanbul、Yeşilköy、Atatürk 等)。

当我直接从数据库中获取这些数据时,一切正常。意味着数据保持原始但当我使用 json_encode() 将这些数据转换为 JSON 时会出现问题。

编码后所有这些数据转换为一些奇怪的字符,如 ?stanbul, Bak?rköy...

但解码后(使用 json_decode)我需要编码之前的原始字符串(json_encode)。

我尝试了网络上提供的许多解决方案来解决问题,但在我的情况下没有一个完全有效。

我尝试过的一些解决方案-

如果不可能得到原始字符串,至少应该没有?喜欢的东西(删除这些东西)。

建议我解决问题。

【问题讨论】:

  • // 在你的 mysql 查询中设置字符集 mysqli_query($conn, "SET CHARSET utf8")
  • 我将 header 设置为 header('Content-Type: application/json charset=utf-8');从数据库获取数据后我的数据很好,但编码后发生了变化

标签: php json


【解决方案1】:

从 PHP 5.4 开始,您可以使用它:

json_encode($text, JSON_UNESCAPED_UNICODE);

【讨论】:

  • 像魅力一样工作!非常感谢!
【解决方案2】:

mysqli_query();之前使用mysqli_set_charset(connection,charset);;

示例:

mysqli_set_charset( $CONNECTION, "utf8" );

$result_query = mysqli_query( $CONNECTION, $query );

【讨论】:

    【解决方案3】:

    这个库救了我的命(https://github.com/neitanod/forceutf8)。

    以前我使用错误的方法来解决问题。 toUTF8() 函数是救命稻草。

    【讨论】:

      猜你喜欢
      • 2017-02-27
      • 2014-01-08
      • 2018-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-24
      • 2012-11-14
      相关资源
      最近更新 更多