前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue填坑记录:axios 返回中文乱码问题

vue填坑记录:axios 返回中文乱码问题

原创
作者头像
shirishiyue
修改2018-11-07 14:44:51
14.5K0
修改2018-11-07 14:44:51
举报
文章被收录于专栏:全栈码全栈码

以前接口都是php写的,echo 出 json 串给页面jQuery ajax用的。

代码语言:javascript
复制
//.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编码的,如下格式:

代码语言:javascript
复制
[{"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 的参数:

代码语言:javascript
复制
  // `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,如下:

代码语言:javascript
复制
//.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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档