1. 程式人生 > >Eclipse console 輸出中文亂碼問題(輸出語句System.out.println中的中文正常,但是log.輸出的中文是亂碼)

Eclipse console 輸出中文亂碼問題(輸出語句System.out.println中的中文正常,但是log.輸出的中文是亂碼)

背景:除錯程式碼時,發現log.debug資訊中的中文都變成了亂碼,進一步觀察發現,System.out.println中輸出的中文又是正常的!



在網上搜了很多資料,相關的部落格很多,但是要麼不能解決我的問題、要麼寫的原因我無法認可,隨後決定探索一下。

經過探索,終於得出了結論,特此總結下來:

先上結論(此亂碼原因):log日誌配置編碼和執行時編碼不一致造成的。兩者只要一致,就不會出現亂碼,不管設定UTF-8還是GBK;(具體做法見下面總結)

 

總結下eclipse中編碼設定:

1、工作區間:工具欄 Window-->Preferences-->General-->Workspace-->Text file encoding-->選編碼;             

2、工程:工程右鍵,Properties-->Resource-->Text file encoding-->選編碼

3、某檔案:檔案右鍵,Properties-->Resource-->Text file encoding-->選編碼

【1】上面3個,是相互影響的,一般優先起作用的順序是3-2-1;即雖然工程編碼是GBK,也可以單獨設定某檔案編碼是UTF-8;

【2】檔案的編碼,就跟System.out.println語句輸出的中文格式有關係了。

          值得注意的是,eclipse檔案中含有中文時,直接修改編碼會導致檔案中中文直接變成亂碼,輸出自然也就是亂碼了,且編碼並沒有提供GBK格式。另外,即便你先選擇瞭如ISO-8859-1這樣的格式,再編輯中文的話,也是無法正常儲存的,倒是提供了一個save as  UTF-8的選項。

4、日誌配置檔案編碼設定:(charset 設定的編碼格式要與下面執行時編碼設定一致)

  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

5、執行時編碼:main方法類中右鍵  Run as -->Run Configuration-->Common --> Console Encoding-->Others-->選擇或者手動輸入一個編碼格式;假如你4中log檔案設定的是GBK,那麼在這裡也只能選GBK才不會出現亂碼。

 

相關部落格:Java web 中的中文亂碼問題總結