Ajax中文乱码解决总结

我使用Ajax传数据常常遇到乱码问题,前端和后台后有可能出现,下面总结一下Ajax传数据可能遇到的问题和解决方案,任何一点都可能造成乱码问题。我使用java servlet写后台,ajax传数据
1.检查IDE的编码,
eclipse:
项目,右键,properties->resource->other 选择utf-8
webstorm: 右下角
这里写图片描述
2.,在html中meta标签和script标签

<meta charset="utf-8">

当前面pageEncoding和contentType都没有设置的情况下,被解析成的html页面就会采用这种编码方式。来把byte解析成浏览器显示的信息。

<script type="text/javascript" src="js/login.js" charset="utf-8"></script>

3.客户端:ajax传数据的时候,设置请求头的编码
(1)get提交
对于这种,影响的有tomcat的URIEncoding;
浏览器会根据自己的页面的编码格式作为起始编码格式,
(2)post提交
对于这种情况,response.setCharacterEncoding有影响,当没有对response.setCharacterEncoding设置的时候值为null,则默认采用iso-8859-1来进行重新编码(解码)。解决方案看第5点

$.ajax({
        type: "post",
        url: "http://localhost:8080/EasternAirlines/loginjudger",
        data: {},
        dataType: "jsonp",
        jsonpCallback:"user",
        scriptCharset : 'utf-8',//这两个地方的编码
        contentType: "application/x-www-form-urlencoded; charset=UTF-8",//有的浏览器没有默认,firefox和google、ie浏览器就不一样
        success: function(data){
            console.log(data);
            login_state(data);
        },
        error:function(data){
            alert(data.status);
            alert("失败");
        }
    });

4.服务器:设置请求和响应的字符编码为utf-8,设置请求头接收的编码是utf-8,请求头和ajax里的请求头对应。BufferedWriter处一定要写在设置各种编码的下面,否则不起作用(此处坑了我好多时间)

        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=UTF-8"); 
        writer = new BufferedWriter(resp.getWriter());//此处必须写在上面几句话的下面

5.后台:jsonp传数据一般是iso-8859-1编码,所以在后台你需要对默认编码转成utf-8编码,就可以了

String user= new String(req.getParameter("user").getBytes("iso-8859-1"),"UTF-8");

6.后台一般会有操作数据库的操作,如果从数据库里读取的数据就是乱码的,传到前端肯定是乱码的,数据库也有一些地方要注意编码,我使用JDBC操作数据库
(1)在写URL的时候注意编码:

private static final String url = "jdbc:mysql://localhost:3306/airplane?useUnicode=true&characterEncoding=UTF-8";

(2)数据库表当然也得都是utf-8的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值