IDEA+Tomcat+ajax乱码问题

IEDA+Tomcat+ajax中文乱码问题

对自学编程的人而言,乱码问题往往很耽误时间并让人烦躁,下面给大家分享一次IDEA+Tomcat+ajax乱码问题解决的全过程
先列代码:
前台,非常简单的原生ajax POST请求:

let btn1=document.getElementById('btn1');
let div1=document.getElementById('div1');
btn1.onclick=function(){
    let xhr=new XMLHttpRequest();
    let obj={
        "测试":2,
        "num2":3
    };
    let data=JSON.stringify(obj);
    let url="http://localhost:8080/ajax";
    xhr.open("post",url,true);
    xhr.setRequestHeader("Content-Type","application/json;charset=utf-8"); 
    xhr.onreadystatechange=function(){
        if(xhr.readyState==4){
            if(xhr.status==200 || xhr.status==304){
                console.log(xhr.responseText);
                let result=JSON.parse(xhr.responseText);
                console.log(result);
            }
        }
    }
    xhr.send(data);
}

后台:一个简单的servlet(如果用框架(像spring),编码格式的设置应该有特定的配置文件)

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        res.setContentType("text/json;charset=utf-8");
        res.setCharacterEncoding("utf-8");
        StringBuffer sb=new StringBuffer();
        InputStream is=req.getInputStream();
        InputStreamReader isr=new InputStreamReader(is);
        BufferedReader br=new BufferedReader(isr);
        String s="";
        while ((s=br.readLine())!=null){
            sb.append(s);
        }
        String result=sb.toString();
        System.out.println(result);
        res.getWriter().write(result);
 }

然后、问题就来了,如果大家看代码,发现前后台已经都是utf-8了,但是,IDEA的控制台和浏览器里console里打印出来的result都是乱码。然后,作为一个新手吗,我就懵逼了,于是、就开启了搜索引擎之旅。
第一步:修改IDEA里的文件编码方式:
在File-Settings-Editor-File Encodings里,如下图:
这里写图片描述
,把右边能设置的全部设置为utf-8,保存,重启Tomcat,重新运行项目,然而,并没有用,IDEA的控制台和浏览器的console里依然都是乱码。苦思冥想了几分钟之后,我梳理了一下思路,浏览器的请求发送之后是到Tomcat的,然后由Tomcat处理之后再返回响应,现在浏览器里的乱码应该是Tomcat处理之后返回的的,而IDEA的控制台里的乱码,应该是IDEA自己的设置问题。
第二部:修改Tomcat启动时的编码
在Edit Configurations里,如下图:
这里写图片描述
在VM options里填入:

-Dfile.encoding=UTF-8

保存设置,然后重启Tomcat服务,这时候浏览器里的乱码问题已经没有了。
第三部:设置IDEA的内部编码问题
编辑器的控制台输出的内容肯定是是编辑器内部的文件中的内容,在IDEA的安装目录里,在bin目录找到 idea64.exe.vmoptions 这个文件(如果是32位系统,应该是idea.exe.vmoptions),在这个文件里同样加入:

-Dfile.encoding=UTF-8

然后重启IDEA,运行项目,乱码全部消失!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值