编码乱码问题解释,解决Tomcat乱码的最快速有效办法。【希望能够指正】

SSM 同时被 2 个专栏收录
50 篇文章 3 订阅
15 篇文章 0 订阅

编码乱码问题的自我理解

乱码原因:
  请求URL要被浏览器进行编码encoder ----> 发送到服务器端再进行解码decoder --> 编码与解码方式不一致就造成了乱码问题。

从页面传入一个参数username = 帝峰,进行处理乱码问题

@RequestMapping(path="testEncode")
    public String testEncode(String username) throws Exception{
	//直接输出结果是username = %E5%B8%9D%E5%B3%B0
	System.out.println("username = " + username);
	
    //查看浏览器请求域,发现username = 帝峰 这两个字被utf-8编码变成了%E5%B8%9D%E5%B3%B0
	//我们可以通过URLDecoder.decode解码(UTF-8编码)来解决中文乱码问题
        //String decodeName= URLDecoder.decode("%E5%B8%9D%E5%B3%B0","UTF-8");
        String decodeName= URLDecoder.decode(username,"UTF-8");
        //解码输出正常 username = 帝峰
        System.out.println("username = " + decodeName);
        return "requestmappingsuccess";
    }

上面那种通过URLDecoder.decode()进行解码显然不符合我们的需要,因为我们并不知道我们编码过程到底使用了哪一种编码,而且每次都这样写显得很麻烦。

我们来了解下,程序的执行流程【感觉有些问题,求指正】

jsp页面 —> 经过翻译(使用pageEncoding编码)变成servlet存储jsp翻译之后是当成servlet来运行的) —> 通过javac编译(javac编译使用的是utf-8编码,占两个字节,也就是Unicode utf-8)变成servlet.class二进制文件 —> 交给tomcat服务器(tomcat默认使用iso8859-1编码,需要将其改为utf-8保证编码一致) —> 交给Controller等程序,编码设置ontentType="text/html;charset=UTF-8"为UTF-8 —> 到客户端 —> 再到jsp页面 —> 通过pageEncoding="UTF-8"解码显渲染成页面展示给用户。

【上面归纳是我自己总结的,感觉有些错误,下面指出下我好改,萌新一位~】
解决乱码,最简单的就是保证执行步骤的每一步都是同一编码格式。也就是保证所有环境编码一致。

解决Tomcat服务器启动控制台输出乱码的最简单方法:

乱码情况截图

在这里插入图片描述

解决办法

  修改tomcat目录下的conf目录的logging.properties文件的第47行,将UTF-8改为GBK

在这里插入图片描述

在这里插入图片描述

【总结 - 疑惑】

原本的我一步步修改解决乱码,至于这个为什么一步解决,我也想知道,希望大佬们告诉我

  • 7
    点赞
  • 4
    评论
  • 2
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页

打赏作者

strive_day

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值