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

编码乱码问题的自我理解

乱码原因:
  请求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

在这里插入图片描述

在这里插入图片描述

【总结 - 疑惑】

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

猜你喜欢

转载自blog.csdn.net/qq_40542534/article/details/109082850