大多数的乱码文章主要就集中在两方面
- tomcat要在server.xml connector设置URIENCODING=utf-8
- 就是修改自己的代码先解码成什么ISO-8859-1在编码成UTF-8
但是却都没有注意到tomcat版本导致的乱码解决方式也是不一样的,我在项目中遇到的bug,写下来为了让自己以后不再走相同的坑
首先tomcat我是拉取的镜像,保证镜像的干净,我不会再server.xml修改
当时我们线上用的是tomcat8,当时代码定义了两个工具类
public static String getURLParameter(String value)
{
if (value == null)
return null;
try
{
return new String(value.trim().getBytes("ISO-8859-1"), "utf-8");
}
catch (UnsupportedEncodingException e) {
e.printStackTrace(); }
return null;
}
public static String getURLParameter2(String value)
{
return value;
}
代码里面写要不要就是getURLParameter要不就是getURLParameter2,感觉就像是在试哪一种情况不会出现乱码,而没有从根本上解决乱码问题
tomcat8其实自己有进行编码的能力,他会按照UTF-8进行传输中文,如果你用ISO-8859-1进行解码然后在用UTF-8编码就肯定会 出现乱码
相反tomcat7没有自己进行编码的能力,你用ISO-9959-1进行解码然后再用UTF-8进行编码并不会出现乱码的问题
尽量不要想着改tomcat内的配置文件,我基本都是用docker拉取镜像,如果老是修改镜像里面的文件得有多烦人,尽量保证镜像的整洁,拉取就可以用
注意:如果你用text文本进行传输中文,并且会有html书签,这样要注意不要给它进行ISO-8859-1解码,否则也会出现乱码问题
版权声明:本文为chai_ge_ge原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。