在Java Web开发中,我们经常会遇到这样的情况:网页显示的中文正常,但控制台输出的中文却变成了乱码。明明已经设置了UTF-8编码,为什么控制台输出还是乱码呢?
方案一:代码级解决(临时方案)
通过直接控制字节输出:
String consoleMessage = "这是中文信息";
System.out.write(consoleMessage.getBytes(StandardCharsets.UTF-8));
System.out.println(); // 添加换行
方案二:JVM参数配置
向Tomcat添加以下JVM参数:
-Dfile.encoding=UTF-8
-Dsun.stdout.encoding=UTF-8
-Dsun.stderr.encoding=UTF-8
-Dconsole.encoding=UTF-8
应用并确定
或者在帮助里选择修改虚拟机选项,添加这四个
-Dfile.encoding=UTF-8
-Dsun.stdout.encoding=UTF-8
-Dsun.stderr.encoding=UTF-8
-Dconsole.encoding=UTF-8
目前控制台正常输出项目的中文测试信息,不过tomcat日志部分乱码
可修改tomcat的conf\logging.properties文件,改成utf8,ctrl+s保存
java.util.logging.ConsoleHandler.encoding = UTF-8
然后控制台就没有中文乱码啦