PHP json_encode 和 utf8_encode 不适用于我的 php 文件

Posted

技术标签:

【中文标题】PHP json_encode 和 utf8_encode 不适用于我的 php 文件【英文标题】:PHP json_encode and utf8_encode not working with my php file 【发布时间】:2019-01-26 04:16:10 【问题描述】:

我有一些需要编码的 json - 越南语单词。我尝试使用 JSON_UNESCAPED_UNICODE 但看起来它不再工作了。

  header("Content-type: application/json; charset=utf-8");
  $db = mysqli_connect(DB_SERVER, DB_USER, DB_PASSWORD,DB_DATABASE) or die(mysqli_connect_errno());
  $result = mysqli_query($db,"SELECT * FROM categories") ;
  if (mysqli_num_rows($result) > 0) 
    $response["categories"] = array();
    while ($row = mysqli_fetch_array($result)) 
       $categories["id"] = json_encode($row["id"]);
       $categories["name"]= json_encode($row["name"],JSON_UNESCAPED_UNICODE);
       array_push($response["categories"], $categories);
    
    $response["result"] = "OK";
    $myJSON = json_encode($response);
    echo $myJSON;
  

输入:

id=1 name=Truyện Cổ Tích

输出:

id= 1 名称 = 假

这是我第一次尝试 php。我的 php 版本是 7.2.8。

【问题讨论】:

How to display Unicode data with PHP的可能重复 @RobbieAverill 感谢提到我。我看到了。但不能和我一起工作。 【参考方案1】:
    首次运行mysqli_query('SET NAMES utf8')。 通过json_last_error()打印错误信息

【讨论】:

什么也没发生。不显示任何错误。 Json 字符串打印正常,但使用 "Truyện Cổ Tích" 仍然是错误的,并使用 "Truyện Thần Thoại" 得到 "Truy?n Th?n Tho?i"【参考方案2】:

你必须配置连接SQL,它可以编码集mysqli_set_charset($con,"utf8");

【讨论】:

以上是关于PHP json_encode 和 utf8_encode 不适用于我的 php 文件的主要内容,如果未能解决你的问题,请参考以下文章

php json_encode数据格式化2种格式[]和{}

php json_encode数据格式化2种格式[]和{}

PHP的json_encode中文被转码的问题

php中json_encode和json_decode的用法

PHP json_encode 反斜杠和数组名称的问题

PHP的json_encode中文被转码的问题