这个问题,偶尔会有人遇到,但是因为提问者,没有将自己的环境等信息说明清楚,导致回答者十分难以回答;
以下为案例:
案例一:有@愚匠 @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的

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