本文关键解决方案来源:tomcat乱码解决
省流助手:
本文只针对
1. cmd启动tomcat乱码
2. idea启动tomcat乱码、
3. 非web配置下的sout输出乱码
4. idea代码文件中中文乱码的解决
5. json回传html文件乱码的解决
其他web配置下的:get/post中文乱码、ssm下的中文输出和json乱码,本文没有涉及!
温馨提醒:当问题出现时,一定要明确问题的大概来源。
get/post乱码去查询tomcat乱码的解决是南辕北辙,白费功夫
本人使用idea作为编辑工具,eclipse用户也可作为参考
1.cmd下tomcat乱码的原理
cmd控制台使用gbk的编码来显示文字,8.0版本以后的tomcat日志输出却采用utf-8的编码,utf-8不能
使用gbk的编码来正常显示,
正如你不能把typeC的充电器给typeB充电口的手机充电一样,能捅进去已经不容易了,还要求能正常充电
就只是痴人说梦了(如果你对gbk和utf8编码不太理解,欢迎您自行百度)
那么应该如何解决标题提出的问题:
很简单---把tomcat日志输出的编码方式改为gbk即可
或者,把cmd的文字编码方式改为utf-8(不推荐,存在部分无法解决的win系统bug)
**严正警告**:不要把win系统的编码方式由gbk换为utf-8,存在系统无法使用的风险
具体操作步骤:
- 把图片中 位置① java.util.logging.ConsoleHandler.encoding的UTF-8 改为GBK,重启tomcat后观察乱码是否解决,如未解决,请按照步骤②操作。
- 把图片中②位置java.util.logging.ConsoleHandler.encoding的UTF-8全部改为GBK,重启tomcat乱码应该会得到解决,如未解决,你可能需要去问问上帝
文件位置:
/conf/logging.properties
2.idea下tomcat乱码原理
idea的控制台默认使用gbk的编码,tomcat如果使用utf-8的编码输出日志到idea的控制台有可能不会乱码,
但tomcat localhost log单元一般都会显示中文乱码
按照1中的步骤设置tomcat编码格式,在idea控制台上,你应该是看不到乱码的。
但是你如果看到了乱码,请查看file-setting-editor--general--console 下的默认编码是否是gbk
不推荐你将console的默认编码改为utf-8,否则将导致问题3、sout输入时中文乱码的问题
(问题的原因是:jvm采用gbk编码,要想使用utf-8
需要在jvm 启动参数 VM options 加个配置 -Dfile.encoding=UTF-8 如下图--虚拟机选项)
json传值的乱码,深层原因大多是问题1、2的累加,通过对1、2的解决,大都可以解决传值的乱码。
文件内中文乱码基本不会出现,如果产生,依然是文件编码不符的原因,将idea 图中utf-8的编码改成其他编码尝试即可
最后关于eclipse软件中的乱码解决,也是上述的思路