用户
 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,登录网站

2017-1-20 15:37:29 天下雪原创达人 造轮子 人生巅峰 楼主 38235
这个问题,偶尔会有人遇到,但是因为提问者,没有将自己的环境等信息说明清楚,导致回答者十分难以回答;

以下为案例:

案例一:有@愚匠   @tony 提供的案例
“request:fail response data convert to UTF8 fail”已经解决了
是因为浪云SAE的实名认证问题,在没有实名认证情况下,返回的信息含有一个有特殊编码内容的中文字符串,ios系统无法识别,通过实名认证之后,这个字符串消失了,ios就好使了

根据愚匠的案例,基本可以得出,这个问题,是因为不可见的特殊编码内容导致的;

可以参考以下安卓中的案例进行排查是否有此问题:
后台返回数据中有bom非法字符, 前端可以用.trim()方法去一下, 治标的话得让后台把所有的文件编码格式改为utf-8
官方解释:近日有发现类似问题的都是因为返回的数据是 UTF-8 with BOM(即数据的开头是一个不可见字符 unicode 65279),Android 平台没有自动过滤,导致 JSON.parse 失败。目前需要开发者自行兼容,下个版本 Android 会过滤此字符。

<?php 前边有一个 <feff>:http://www.wxapp-union.com/portal.php?mod=view&aid=959

http://www.wxapp-union.com/forum.php?mod=viewthread&tid=1366:
你请求得到的res.data是否有值,如果没有值就检查一下ssl的问题。
如果有值但没有赋值成功,最可能的原因是获取的是一个字符串而不是一个数组或对象。
你需要做一个格式化, if(typeof res.data === 'string')var data = JSON.parse(res.data.trim());再用data赋值。
这个的原因是php输出的不会忽略BOM的文件头,特别使用windows自带写字板修改后就会有个\ufeff的字符在文件开始处,这个是不可见但会实际包含的。最后返回的就是字符串而非json数据,你直接对data赋值字符串是无法达到你想要的效果的,所以需要去掉,并重新格式化变成一个数组或对象。

新增案例:提供者@wsy0800@
求高手帮助 request:fail response data convert to UTF8 fail

新增案例:提供者:刘超
怎么让他不转,我响应的数据就是utf-8的


111.png

找到原因了
我对接的微擎 微擎会判断是否微信  如果是则跳转  那么返回的东西就是空  也就是转不了utf8的原因

QQ图片20170329152731.jpg

新增案例:
因为回包不是 UTF-8 编码 请检查服务端配置

有问题请在本站内搜索相应关键词,假如无法解决请在综合交流区内发帖咨询,发帖时请提供详细的问题描述、相关图片及代码。
thinkPHP 有这个坑,深受其害啊 !!!  

    public function txt(){

        $txtAarry = array(
            'name' => 'Gsf',
            'nick' => '郭少锋 18965668180',
            'contact' => array(
                'email' => '597048937@qq.com',
                'web' => 'http://597048937.com',
            )
        );
        $Data = array('result' => $txtAarry);
        return $Data;
    }

    public function json1(){
        $jsonTxt = json_encode($this->txt());
        echo $jsonTxt;
    }
    public function json2(){
        $this->ajaxReturn($this->txt(),'JSON');
    }

网页上显示如下
{"result":{"name":"Gsf","nick":"\u90ed\u5c11\u950b 18965668180","contact":{"email":"597048937@qq.com","web":"http:\/\/597048937.com"}}}

安卓手机上也是一样的显示,但是,却是文本,而不是对象。

评分

参与人数 1浮云 +20 收起 理由
天下雪 + 20 解决了就好

查看全部评分

请问微擎的那个案例解决方案是什么
QQ597048937 发表于 2017-2-21 17:02
thinkPHP 有这个坑,深受其害啊 !!!  

    public function txt(){

tp3.2.3也有这个问题,您是怎么解决的呢。
发新帖
您需要登录后才可以回帖 登录 | 立即注册