PHP 发送 json 代码,客户端接收乱码问题

2016-04-21 12:49:03 +08:00
 lyp111332
<?php

$db_connect=mysql_connect("localhost","root","root") or die("Unable to connect to the MySQL!");

//选择一个需要操作的数据库
mysql_select_db("emp",$db_connect);
mysql_set_charset('utf8',$db_connect);
//执行 MySQL 语句
$result=mysql_query("SELECT * FROM tianqi");

//提取数据
$row=mysql_fetch_row($result);
$n = 0;
$result = mysql_query("SELECT * FROM tianqi");
while ($row = mysql_fetch_array($result)) {
$arr[$n++] = array(
"id" => $row['id'],
"location" => $row['location'],
"oxygen" => $row['oxygen'],
"negative" => $row['negative'],
"humidity" => $row['humidity'],
"temp" => $row['temp'],
"pm" => $row['pm'],
"createtime" => $row['createtime']
);
}

echo json_encode($arr,JSON_UNESCAPED_UNICODE);

以上代码是我发送给客户端的代码 在网页上打印出来的 json 数据是正确的,但是在客户端接收的数据中,有中文的就变成乱码了
2750 次点击
所在节点    PHP
8 条回复
zeevin
2016-04-21 13:00:23 +08:00
去掉 JSON_UNESCAPED_UNICODE
iyaozhen
2016-04-21 13:03:51 +08:00
JSON_UNESCAPED_UNICODE
这个参数大多是为了显示好看,数据要传输的话还是去掉吧
b821025551b
2016-04-21 13:04:41 +08:00
@zeevin 如果是 iOS 设备使用接口最好不要去掉 JSON_UNESCAPED_UNICODE 。
设置一下 header 为 utf8 试试
BOYPT
2016-04-21 13:14:21 +08:00
json 标准要求是全部 unicode 传输的,如果设置 header 的话就要设置成 unicode 而不是 utf-8 吧。
php 并不支持 unicode 串,所以一楼的意见没错。
lmaq
2016-04-21 13:20:57 +08:00
注意编码
lyp111332
2016-04-21 13:23:03 +08:00
@b821025551b 需要传输到安卓和 ios 设备上的
b821025551b
2016-04-21 13:35:14 +08:00
@BOYPT 感谢指正,查了一下确实是这样。当初做外包的时候 iOS 那边告诉我不要在 json 里用\u 这种格式,不然他们解析不了 囧
nasta
2016-04-21 15:44:03 +08:00
伟大的 PHP 返回 json 大多不设置 Header 的 Content-Type ,也不注意字符的编码问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/273345

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX