牛骨文教育服务平台(让学习变的简单)
博文笔记

$.post和String转流时引起乱码及解决办法

创建时间:2016-08-07 投稿人: 浏览次数:567

参考脚本之家:网址: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"));  //指定编码方式

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。