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

1.情景展示

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

我们知道,通常情况下,我们会将java文件的字符集修改成utf-8,这样,理所当然地就认为:JVM在加载class的时候,自然是按照utf-8进行解析的。

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

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

这样,肯定有问题。

2.原因分析

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

但是,问题恰恰就出现在了这里,一直都是以utf-8进行编译,以gbk进行解析,中文也没有出现乱码问题,至于为什么,我没有想通。

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

3.解决方案

方案一:设置环境变量

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

455df7b54d7c9ac520328d2fb60cba2c.png

变量名设置为:JAVA_TOOL_OPTIONS

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

确定即可。

方案二:修改tomcat

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

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

21adbb6dc7e69d1e415b652296235302.png

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

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

重新启动tomcat即可。

注意:如果你像上面那样修改成utf-8后,重启后的tomcat,日志肯定乱码。

4bc7346d33f439d769a1de05d3a353d0.png

因为Tomact日志字符集采用的是gbk,java强制将gbk转换成utf-8后,造成乱码是自然的事情了。

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

9239149c18dd890d8e2bd87819fcea58.png

#指定tomcat日志字符集

java.util.logging.ConsoleHandler.encoding = GBK

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

2e4f639710c3adebb6e86ad8fdc0ee03.png

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

写在最后

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

相关推荐:

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是一个 Java 运行时的命令行选项,表示将文件编码设置UTF-8。它可以在运行 Java 程序时作为参数传入,例如:"java -Dfile.encoding=utf-8 MyProgram"。 ### 回答2: "picked up java_tool_options: -dfile.encoding=utf-8" 这个提示信息通常出现在使用Java编译和执行程序的时候。这个提示就像一个告警,它意味着Java虚拟机在启动时发现了某个程序中设置了这个环境变量,这个环境变量指定了Java编译和执行程序时需要采用的字符集编码格式。 Java编译和执行时字符集编码是非常重要的,因为它直接影响着程序的运行效果和程序的输出。如此设置 -dfile.encoding=utf-8 ,是要指定编译和执行时使用的字符集编码格式为utf-8,这意味着这个程序是一个多语言的应用程序,他的输出包含多种语言的字符和符号。 这个警告信息不是一个错误信息,只是一个提示性的信息。虽然看上去有点烦人,但它并不会影响程序的运行效果。 而且,如果你不想看到这个提示信息,可以在启动命令加上 -Djava_tool_options="-Dfile.encoding=UTF-8",这样就可以屏蔽这个提示信息。 总之,"picked up java_tool_options: -dfile.encoding=utf-8" 这个提示信息提醒着我们在编写Java程序的时候一定要注意字符集编码格式的设置,以确保程序不会因字符集编码问题而出错。 ### 回答3: "picked up java_tool_options: -dfile.encoding=utf-8" 是一条提示信息,出现在使用 Java 命令行工具运行程序时的标准输出中。它告诉我们 Java 虚拟机JVM)正在读取并使用环境变量中的 java_tool_options 参数。其中,-dfile.encoding=utf-8 部分是一个 JVM 系统属性,用于指定文件编码格式,这里指定为 UTF-8Java文件编码格式对于文本处理、字符集转换等操作非常重要。如果没有正确指定编码,可能会导致程序输出中文乱码、读取的文本文件内容出现错乱等问题。因此,当使用 Java 程序处理文本时,建议始终使用正确的编码方式进行操作,并在必要时使用 -dfile.encoding 参数进行指定。 值得注意的是,java_tool_options 环境变量是一个用于设置 JVM 系统属性的标准变量,可以用于调整 JVM 的运行参数,例如指定堆大小、开启调试模式等。具体使用方法可以参考相关文档或工具书。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值