php - JSON 输出重音问题

标签 php mysql ios json utf-8

我已经搜索了大约 3 个小时,我知道已经有人问过很多这样的问题,但是在尝试输出时我还没有找到适合我的问题的解决方案通过对我的数据库进行 SELECT 查询的结果的重音字符。

 $itemsList = array();
 while($row = mysql_fetch_assoc($res)){
    $itemsList[Items][] = ($row);
 }
 echo json_encode($itemsList);

这将输出:

{"Items":  [

{"user_name":"misterP", 

"comment":"\u00c3\u00a9t\u00c3\u00a9",

"image_name":"403885300736874.jpg"}]}

但我需要输出重音,像这样:

{"Items":  [

{"user_name":"misterP", 

"comment":"été",

"image_name":"403885300736874.jpg"}]}
  • 我的数据库和表有类间 utf8_general_ci
  • 插入到我的数据库中的数据是utf8_encoded
  • 我的 php 脚本是 Unicode (UTF-8)
  • 我在数据库上的 SELECT 之前执行了“mysql_set_charset( 'utf8' );”
  • 如果这可以帮助某人:在 y 数据库中,单词“été”是:“Été”

所以我真的不知道现在该怎么办,我真的被口音困住了,我无法让它工作。提前致谢 !

最佳答案

这并不重要。当 json 被解码时,它们又变成了字符。

如果你使用 php 5.4 >=,你可以将 JSON_UNESCAPED_UNICODE 传递给 json_encode:

json_encode( $data, JSON_UNESCAPED_UNICODE )

但同样,unicode 转义同样有效并使数据 ascii 安全。

编辑:

看起来你的数据已经被搞砸了,甚至在 json_encode 之前。您似乎已将其“双重编码”为 utf-8。

The datas inserted in my database are utf8_encoded

您使用的是 utf8_encode 之类的东西吗?插入数据库时​​,您无需在代码中执行任何操作。如果您使用 utf8_encode 在数据库中插入数据,那么这就解释了双重编码。您所需要的只是数据为 utf-8 并且在插入之前具有 mysql_set_charset( 'utf8' )


有趣的是,如果您的 json 具有未转义的 unicode,则 json cannot be executed as javascript即使您在 json 包含 U+2028 的情况下添加括号或 U+2029 .

关于php - JSON 输出重音问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13826283/

相关文章:

iphone - 每次启动应用程序时播放启动画面(支持多任务)

php - 如何在 Laravel 中级联软删除?

php - MySql如何将多个表中的数据只显示一次?

php - Mysql 在两个日期和时间之间进行搜索

mysql - 此查询或我的数据库有什么问题?糟糕的表现

Mysql返回不同数量的行

java - 如何使用Java将生成的PDF文件保存到MySQL数据库?

php - DOM 解析 - 如何解析这样的文件中的 html

ios - 无法使用类型为 (String, Int) Swift 2 的索引为类型 [(String, Int)] 的值下标

ios - 如果设备版本为 iOS 8,则删除启动屏幕