解决无法使用AJAX传GB2312中文,只能Utf-8的编码问题。

暴力解决AJAX传GB2312编码的字符串

通过js暴力转码,解决项目中ajax只能utf-8的问题,ajax的req只Content-Type : xxxx;charset=UTF-8。爷无语,不管怎么改xhr.setRequestHeader(“Content-Type”,“application/x-www-form-urlencoded;charset=gb2312”),都不给点反应的。

解决方法

整个项目是GB2312编码,后端是c语言,arm 。整个结构大概就是后台管理,前台用户。管理账号少,用的也就是前后不分离的操作非常省事,完全的也七七八八,完美。

但是前台用户量多,请求可能会比较大,准备分离,但是jq也好原生ajax也好,怎么整都是utf-8,成片的乱码。也用了挺多方法,最后找了一个js手动转码的方法。

如果想用上jq的话,本篇最后也提供了想法,大概就是找jq的封装方法,把转编码重写,见下面jq段落。

上连接:https://gitee.com/leaflxd/encodeToGb2312?_from=gitee_search

转码js:

function(){
   
	var json = {
   ...
	}
	// 自己进连接看
	var encodeToGb2312 = function(str)
    {
   
    	if(typeof(str) === "number")
        {
   
            return str;
        }
        else
        {
   
	        var strOut="";
	        for(var i = 0; i < str.length; i++)
	        {
   
	            strOut += "%";
	            var c = str.charAt(i); 
	            var code = str.charCodeAt(i);
	            var gcode = json[code.toString(16).toUpperCase()];
	            if(gcode && gcode.length % 2 !== 0) 
	            {
   
	                gcode = "0" + gcode;
	            }
	            if(c==" ") 
	            {
   
	                strOut += "20";
	            }
	            else if(code < 164)
	            {
   
	                var b = str.charCodeAt(i).toString(16);
	                if(b && b.length % 2 !== 0) b = "0" + b;
	                strOut += b;
	            }
	            else if(gcode)
	            {
   
	                strOut += gcode[0]+gcode[1]+"%"+gcode[2]&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值