水影鸣人
水影鸣人
  • 发布:2015-04-24 16:32
  • 更新:2015-12-30 15:45
  • 阅读:3725

mui.ajax中文参数乱码

分类:MUI

在使用mui.ajax发送请求时,参数中带有中文时会出现乱码的情况,看之前的提问说这个问题已经解决了,那还是在去年11月份,但是为什么现在还有这个问题?

mui.ajax(url,{  
        data:{  
            "token":tokenValue,  
            "_sourcename":"put_journal_list",  
            "_method":"PUT",  
            "_define":"",  
            "_id":"",  
            "_param":"["+str+"]"  
        },  
        dataType:'json',//服务器返回json格式数据  
        type:'post',//HTTP请求类型  
        timeout:10000,//超时时间设置为10秒;  
        success:function(data){  
            //服务器返回响应,根据响应结果,分析是否登录成功;  
            console.log(JSON.stringify(data));  
        },  
        error:function(xhr,type,errorThrown){  
            //异常处理;  
            console.log(type);  
        }  
    });
2015-04-24 16:32 负责人:无 分享
已邀请:
DCloud_UNI_FXY

DCloud_UNI_FXY

贴出来你的代码

  • 水影鸣人 (作者)

    str这个参数中包含中文

    2015-04-24 16:47

  • DCloud_UNI_FXY

    所有参数我们均使用encodeURIComponent做了编码。排查下你服务端接收参数的地方是否有问题

    2015-04-24 16:52

  • 水影鸣人 (作者)

    回复 DCloud_UNI_FXY:请问你们使用的是什么编码方式做的编码?gbk?utf-8?还是其他的什么?

    2015-04-24 17:06

  • DCloud_UNI_FXY

    。。。我们没有做什么编码方式,编码是你的页面编码,你可以自己设置自己页面的编码。

    不过HBuilder默认的应该是utf8

    2015-04-24 17:27

  • 水影鸣人 (作者)

    回复 DCloud_UNI_FXY:xmlhttprequest这种请求方式也会做encodeURLComponent这样的处理吗?

    2015-04-24 17:30

  • DCloud_UNI_FXY

    mui.ajax里边我们统一作了encodeURLComponent。自己用xhr写的话。需要自己处理编码问题

    2015-04-24 17:38

  • 水影鸣人 (作者)

    回复 DCloud_UNI_FXY:嗯!发现了两者的不同,我用xhr发请求的时候就不存在这个问题。经过检查发现,使用mui.ajax发请求,里面的中文是奇数个就转换不正确,偶数个就没问题,服务端在接收到数据后,自动将utf-8转换成gbk,然后就把中文字符串后面的一个字节也加到串中,导致最后一个中文转换不正确,这个问题会是encodeURLComponent导致的吗?

    2015-04-24 17:50

  • DCloud_UNI_FXY

    你客户端也用gbk就行了吧。不让服务端utf8转gbk。

    把你的页面文件编码换成gbk

    页面meta换成gbk。

    2015-04-24 17:56

  • 水影鸣人 (作者)

    回复 DCloud_UNI_FXY:客户端有好多页面,只需要换出问题的页面就可以是吗?

    2015-04-24 17:57

  • DCloud_UNI_FXY

    理论上是。前后端的编码最好保持一致。不要来回转编码

    2015-04-24 17:59

  • ysf

    这个怎么解决的呀?中文传参乱码,乱码。。。。。

    2015-12-30 15:45

wcgcu110

wcgcu110

楼主解决这个问题了?我也碰到了,当data中有中文字符的时候就有问题了

DCloud_UNI_FXY

DCloud_UNI_FXY

chrome联调,查看request的相关信息,排查前端编码与服务端编码是否一致

该问题目前已经被锁定, 无法添加新回复