1. 程式人生 > 實用技巧 >紀錄一次tomcat原始碼編譯控制檯亂碼問題

紀錄一次tomcat原始碼編譯控制檯亂碼問題

                紀錄一次tomcat原始碼編譯控制檯亂碼問題

  新手一枚,第一次寫檔案,希望大佬可以不講武德的教導評論,本人出於對tomcat設計模式以及執行原理的好奇,特地的去下載了tomcat-src原始碼進行編譯解讀,以便後期面試裝逼用,不多說直接上編譯過程中遇到的問題。

  經過翻雲覆雨的一番設定,成功將tomcat8.5.60原始碼編譯並執行起來,但是卻發現控制檯亂碼,亂碼如下:

解決問題如下:

  修改了config/ 目錄下的logging.properties 將  java.util.logging.ConsoleHandler.encoding = GBK(將配置檔案中的UTF-8 改為GBK),重啟idea執行還是無效,最後找到一篇關於控制亂碼的大佬文章,按照其方法輕鬆解決。

1)org.apache.tomcat.util.res.StringManager類中的getString(final String key, final Object... args)方法,大概在61行左右新增如下程式碼:

try {
value = new String(value.getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

2)org.apache.jasper.compiler.Localizer類的getMessage(String errCode)方法,大概在61行左右新增如下程式碼:

try {
errMsg = new String(errMsg.getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

重啟專案,解決亂碼:

解決方案地址:https://blog.csdn.net/zhoutaoping1992/article/details/104751705 這篇文章已經講的很詳細了,我這裡無需重複,只是大佬比較懶 沒有貼程式碼,我就替大佬乾點活 把程式碼貼上