今天遇到一个问题,有关ajax请求中传输中文,遇到乱码的问题。(初步估计是前后台编码不一致的问题,但明明设置的都是utf-8啊)
网上搜了搜终于找到办法了,不知道有没有更简洁的,不说了上代码
function UpdateFolderInfoByCustId(folderId, folderName, custId) {
$.ajax({
type: "Post",
contentType: "application/x-www-form-urlencoded; charset=utf-8",
url: "http://localhost/Test/Ashx/Customer.ashx?Method=UpdateCustomerById&fId=" + fId + "&fName=" + encodeURI(encodeURI(fName)) + "&cId=" + cId,
success: function (msg) {
alert(msg);
},
error: function (error) {
alert(error);
}
});
}
看到没,我用了两个encodeURI()方法。汉字编码会变为类似“%e6%b5%8b%eb%af%95“的格式。
如果只是传“&fName=”+fName 的话,汉字就会产生乱码,如果经过encodeURL 转换一次的话,汉字也会乱码(不知道为什么)
public void UpdateCustomerByCustId(){
int frId = Convert.ToInt32(Request["fId"]);
string fName = Request["fName"];
string f2 = Convert.ToString(System.Web.HttpUtility.UrlDecode(fName));
int cId = Convert.ToInt32(Request["cId"]);
bool res = false;
try{
res = CustomerBusiness.UpdateCustomerByCustId(fId, f2,cId);
}catch (Exception ex){
throw;
}
Response.Write(res);
}
}
}
经此转换之后,即可获取到传输的汉字。
用下面这种也可以转码,记得处理异常
String fname = java.net.URLDecoder.decode(Request["fName"],"UTF-8")