不同檔案系統導致的亂碼,tomcat亂碼等

蒙奇_DLuffy發表於2015-05-02

不同檔案系統編碼可能出現的問題:
比如你在這個作業系統上完成編碼,然後在另外一個不同檔案系統編碼的系統中進行編譯這個java檔案。編譯時報如下異常
unmappable character for encoding ASCII
解決方法
編譯時:javac -encoding utf-8 EncodedTest.java
執行時:java -Dfile.encoding=utf-8 EncodedTest
這是因為這兩個系統的JDK file.encoding不同導致的。
檢視當前jdk的file.encoding

System.out.print(System.getProperty("file.encoding"));  

也可以手動設定當前jdk的file.encoding

System.setProperty("file-encoding","UTF-8");

對於tomcat使用者也可以通過修改一些配置檔案來選擇file.encoding。

  • tomcat日誌亂碼

    windows 系統
    修改tomcat/bin/catalina.bat檔案, 新增一行

set JAVA_OPTS=%JAVA_OPTS%  -Dfile.encoding=UTF8

Linux、mac、Ubuntu系統
修改tomcat/bin/catalina.sh檔案,新增一行

JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8"
  • tomcat URL引數亂碼

修改tomcat/conf/server.xml 檔案

    <Connector port="8080" protocol="HTTP/1.1" redirectPort="8445"
   maxHttpHeaderSize="8162"
  useBodyEncodingForURI="true"

 minProcessors="100"
 maxProcessors="5000"
     maxThreads="5000"
      minSpareThreads="1000"
       maxSpareThreads="4000"
                                         enableLookups="false" acceptCount="3500"
                                                 compression="on" compressionMinSize="2048"
                                                         connectionTimeout="60000" debug="0" URIEncoding="UTF-8"/
    />

相關文章