现象:
在web工程开发中会不时的遇到控制台日志中文乱码,这些乱码形式主要有:
1,全是问号: {"code":"200","message":"????"}
2,Unicode形式:\u008D\u008E??\u009C??\u0088?\u008D\u0097
3,不知道形式:åä¸ï¼åï¼éå
经过整理网上各种优秀文章,现把解决方案整理如下,不一定全面,但是可以解决大部门的乱码问题,注意,以下各方案不涉及页面乱码
一,首先判断系统是否支持中文
比如新建一个centos容器,需要判断该容器是否支持中文,判断方法是:
执行:locale -a
如果如下图包含zn_CN.utf8,则说明系统支持中文
若没有,则按照下述步骤依次执行:(参考自:Docker centos7 中文乱问题解决方案_baidu_33209239的博客-优快云博客_centos docker 中文乱码)
1,安装语言包(针对centos7):yum install kde-l10n-Chinese -y
2,更新gitbc包(可省略):yum reinstall glibc-common -y
3,设置系统语言包:localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
4,在/etc/profile文件中新增:export LC_ALL=zh_CN.UTF-8
5,重新编译:source /etc/profile
6,设置/etc/locale.conf,新增:LANG="zh_CN.UTF-8"
7,然后重启镜像
二,修改tomcat日志配置文件
1,修改looging.properties文件,如下位置:
2,修改catalina.bat配置(参考自:解决Tomcat的Catalina日志中文乱码_zzzgd816的博客-优快云博客_catalina日志乱码)
将:
if [ -z "$LOGGING_MANAGER" ]; then LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" fi
修改为:
if [ -z "$LOGGING_MANAGER" ]; then JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8" else JAVA_OPTS="$JAVA_OPTS $LOGGING_MANAGER -Dfile.encoding=UTF-8-Dsun.jnu.encoding=UTF-8" fi
如图:
三,设置IDEA编码格式(参考自:Springboot 之 解决IDEA读取properties配置文件的中文乱码问题_九龙冰室083的博客-优快云博客)
依次打开file->setting->editor->file encoding,下图所示位置均选为UTF-8,最后要把Transparent native-to-ascii conversion勾选上
如果完成上述步骤后仍然乱码,则使用以下终极方法:
1,随便在.properties文件里边添加一行无关配置,刷新以下缓存就好了。
2,把.properties文件删除重新创建就好了