java jvm字符集 设置_windows/tomcat 修改java虚拟机JVM以utf-8字符集加载class文件的两种方式...

本文介绍了Java JVM在Windows和Tomcat环境下默认采用操作系统字符集加载class文件,而非UTF-8,可能导致解析问题。作者提供了两种解决方案:一是通过设置系统环境变量`JAVA_TOOL_OPTIONS`来指定`-Dfile.encoding=UTF-8`;二是直接修改Tomcat的`catalina.bat`文件添加相同配置。同时,注意修改Tomcat的日志字符集以避免日志乱码。
摘要由CSDN通过智能技术生成

1.情景展现

作了这么长时间的java开发,可是,你知道JVM是以怎样的编码加载、解析class文件的吗?java

咱们知道,一般状况下,咱们会将java文件的字符集修改为utf-8,这样,理所固然地就认为:JVM在加载class的时候,天然是按照utf-8进行解析的。tomcat

事实并不是如此:JVM加载class文件默认采用的字符集,是由操做系统来决定的。工具

换句话说,JVM会根据操做系统的字符集来解析你的class文件,而不是智能的去判断你的class文件的字符集而进行解析。开发工具

这样,确定有问题。编码

2.缘由分析

以win7/win10中文操做系统为例,咱们借助开发工具以utf-8将java文件编译成class文件,而解析的时候却以GBK的编码加载到JVM中,不出问题才怪!spa

可是,问题偏偏就出如今了这里,一直都是以utf-8进行编译,以gbk进行解析,中文也没有出现乱码问题,至于为何,我没有想通。操作系统

今天的重点不在这里,重点是,咱们怎么让JVM以utf-8的格式解析class文件?日志

3.解决方案

方案一:设置环境变量blog

快捷键:win+r--》输入sysdm.cpl-->回车--》高级--》环境变量--》系统变量--》新建utf-8

8b1efb7c1a93588eb6af89d7999c3030.png

变量名设置为:JAVA_TOOL_OPTIONS

变量值设置为: -Dfile.encoding=UTF-8

肯定便可。

方案二:修改tomcat

路径:{TOMCAT_HOME}/bin/catalina.bat

打开该文件,在有对JAVA_OPS设置的地方,添加代码

92de55caf6b248f93a0eeea7209f1889.png

:设置JVM以utf-8格式解析class文件

set "JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8"

从新启动tomcat便可。

注意:若是你像上面那样修改为utf-8后,重启后的tomcat,日志确定乱码。

031524d14537122ad4a7531764cf4c4a.png

由于Tomact日志字符集采用的是gbk,java强制将gbk转换成utf-8后,形成乱码是天然的事情了。

位置:{TOMCAT_HOME}/conf/logging.properties文件

7f40c8bee061efbf3e704f38539fd751.png

#指定tomcat日志字符集

java.util.logging.ConsoleHandler.encoding = GBK

修改为功后,日志便再也不乱码。

e8cf83e23621cfc9860914cfad0b9217.png

提醒:在Windows下,在黑窗口使用命令对java文件进行编译且没有指定字符集的前提下,编译时默认采用的也是gbk的编码,与java文件自己的字符集无关。

写在最后

哪位大佬如若发现文章存在纰漏之处或须要补充更多内容,欢迎留言!!!

相关推荐:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值