servlet中System.out.println中文控制台显示乱码问题

其实对于这个乱码的问题,不能理解原理,解决问题乱码的问题都只能一个一个试。。。

本来是风和日丽的一天,我正复习着javaweb的转发这个小东西,结果我在转发过到的servlet中sout中文,在控制台却乱码了。。。

然后经过多方查找有如下几步,才解决了我的问题

产生乱码的代码

public class TestServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println(Charset.defaultCharset());
        System.out.println("成功转发到TestServlet");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
}

这里控制台输出成功转发到TestServlet的时候出现了乱码
在这里插入图片描述

先判断当前中文字符编码使用的是哪一种编码集

下面这段代码如果输出true,则表明中文字符串编码采用的就是GBK编码,如果为false就表明不是,自行更换charset这个变量中的假定编码格式

		String charset ="GBK"; //假定编码格式
        String str = "中文";
        boolean flag = str.equals(new String(str.getBytes(),charset));
        System.out.println(flag);

返回ture
在这里插入图片描述
说明编码的字符集就是GBK,然后我们只要将GBK编码转换为UTF-8编码就能解决中文乱码的问题了。

第一步

看第一个地方
在这里插入图片描述
这里必须都是UTF-8,这是我找答案过程中发现很多人都这么设置,但是我其实设置了这一步之后,控制台输出还是乱码

第二步

然后是这个地方输入-encoding utf-8
在这里插入图片描述
但是我设置了这个之后依旧还是控制台输出乱码

第三步

配置这里为-Dfle.encoding=UTF-8

在这里插入图片描述

然后成功解决乱码的问题
在这里插入图片描述

但是我细一想不对啊,这样的话,我岂不是每次都要配置tomcat里面的这个配置,这么繁琐。。。
然后我继续深扒度娘
这个事情的完美解决方案

那就是设置一个环境变量
变量名JAVA_TOOL_OPTIONS
变量值-Dfile.encoding=UTF-8

在这里插入图片描述
然后删除刚刚设置的tomcat中的内容,重启idea

成功解决乱码的问题。
在这里插入图片描述

说来惭愧,因为不明白这里面的每一步都是干什么的,有什么作用,所以只能一个一个试,如果后面学习清楚了每一步都是做什么的,一定回来补充。

  • 22
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值