以前接口都是php写的,echo 出 json 串给页面jQuery ajax用的。
//.php file format gbk
public function queryHeroList(){
$hero = '[{"ename":105,"cname":"廉颇","title":"正义爆轰","pay_type":10,"new_type":0,"hero_type":3,"skin_name":"正义爆轰|地狱岩魂"}]';
echo iconv('gbk','utf-8',$hero);exit();
}
返回的是unicode编码的,如下格式:
[{"ename":120,"cname":"\u767d\u8d77","title":"\u6700\u7ec8\u5175\u5668","new_type":0,"hero_type":3,"skin_name":"\u6700\u7ec8\u5175\u5668|\u767d\u8272\u6b7b\u795e|\u72f0"}]
浏览器看到的是如下response head
奇怪的是,,,在pc浏览器上,一切正常,axios取到的数据,插入到页面上,显示也没有乱码。但是,放到iphone UC浏览器上就有问题了,乱码。
我们看下 axois 的参数:
// `responseType` indicates the type of data that the server will respond with
// options are 'arraybuffer', 'blob', 'document', 'json', 'text', 'stream'
responseType: 'json', // default
// `responseEncoding` indicates encoding to use for decoding responses
// Note: Ignored for `responseType` of 'stream' or client-side requests
responseEncoding: 'utf8', // default
默认按照utf-8格式去解析。估计是这个原因了,
因此,咱们最好还是在php接口上显示注明一下编码 Header,如下:
//.php file format gbk
public function queryHeroList(){
$hero = '[{"ename":105,"cname":"廉颇","title":"正义爆轰","pay_type":10,"new_type":0,"hero_type":3,"skin_name":"正义爆轰|地狱岩魂"}]';
header("Content-Type:application/json;charset=UTF8"); //php文件是gbk格式,但是吐出数据声明是utf8的。
echo iconv('gbk','utf-8',$hero);exit();
}
即可解决问题了。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。