windows/tomcat 修改java虛擬機JVM以utf-8字符集加載class文件的兩種方式

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

  變量名設置爲:JAVA_TOOL_OPTIONS

  變量值設置爲: -Dfile.encoding=UTF-8

  肯定便可。

  方案二:修改tomcat

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

  打開該文件,在有對JAVA_OPS設置的地方,添加代碼

:設置JVM以utf-8格式解析class文件
set "JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8"

  從新啓動tomcat便可。

  注意:若是你像上面那樣修改爲utf-8後,重啓後的tomcat,日誌確定亂碼。

  由於Tomact日誌字符集採用的是gbk,java強制將gbk轉換成utf-8後,形成亂碼是天然的事情了。 

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

#指定tomcat日誌字符集
java.util.logging.ConsoleHandler.encoding = GBK

  修改爲功後,日誌便再也不亂碼。

  提醒:在Windows下,在黑窗口使用命令對java文件進行編譯且沒有指定字符集的前提下,編譯時默認採用的也是gbk的編碼,與java文件自己的字符集無關。

 

寫在最後

  哪位大佬如若發現文章存在紕漏之處或須要補充更多內容,歡迎留言!!!

 相關推薦:

相關文章
相關標籤/搜索