【发布时间】:2017-07-12 00:41:35
【问题描述】:
在我的数据库中,有许多特殊字符,例如(İstanbul、Yeşilköy、Atatürk 等)。
当我直接从数据库中获取这些数据时,一切正常。意味着数据保持原始但当我使用 json_encode() 将这些数据转换为 JSON 时会出现问题。
编码后所有这些数据转换为一些奇怪的字符,如 ?stanbul, Bak?rköy...
但解码后(使用 json_decode)我需要编码之前的原始字符串(json_encode)。
我尝试了网络上提供的许多解决方案来解决问题,但在我的情况下没有一个完全有效。
我尝试过的一些解决方案-
- $item = utf8_encode($item);
- $item = html_entity_decode($item, ENT_COMPAT, 'UTF-8');
- http://www.php.net/manual/en/function.json-encode.php
- 我还尝试了 github 上的一个库 (https://github.com/neitanod/forceutf8)
如果不可能得到原始字符串,至少应该没有?喜欢的东西(删除这些东西)。
建议我解决问题。
【问题讨论】:
-
// 在你的 mysql 查询中设置字符集 mysqli_query($conn, "SET CHARSET utf8")
-
我将 header 设置为 header('Content-Type: application/json charset=utf-8');从数据库获取数据后我的数据很好,但编码后发生了变化