暴力解决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]&#