参考脚本之家:网址:http://www.jb51.net/article/42801.htm
1 $.post引起乱码原因
在火狐下正常,但是在IE和谷歌下不正常。页面虽然设置了属性为UTF-8,但还是有问题。需要设置如下:
$.ajaxSetup({
contentType: "application/x-www-form-urlencoded; charset=utf-8"
});
$.post("test.php", { name: "i5a6", time: "2pm" },
function(data){
process(data);
}, "json");
或者
$.ajax({url:"XX",
type:"POST",
data:{"repoName":"库名","content":"内容"},
contentType:"application/x-www-form-urlencoded; charset=utf-8",
dataType:"json",
success: function(data,state){
alert(data.result.repoRight);
}
})
因为jquery ajax是使用utf-8来编码发送数据的,ie在发送时却没加上charset=utf-8,从而导致乱码(IE默认使用iso-8859-1编码)
2 String转输入流时,如果不指定编码方式,则默认为JVM采用的编码方式,正确如下
InputStream is = new ByteArrayInputStream(inputPathContent.getBytes()); //没有指定编码方式,则会采用系统
JVM采用的方式,进而产生乱码,且该错误不容易被发现。
InputStream is = new ByteArrayInputStream(inputPathContent.getBytes("UTF-8")); //指定编码方式