Linux 或 Unix java控制檯輸出的是亂碼的解決方案

困擾了我兩天了
終於知道是什麼原因了
原來是因爲jvm的編碼方式導致的。
你可以通過System.getProperty("file.encoding")這個方法查看現在的這個文件的編碼方式是什麼,然後再比對一下傳過來的數據的格式,這樣看看是不是轉換正確或者是編碼不一致,然後再改一下自己的程序就可以了,
也可以用System.getProperties().list(System.out); 打印出所有的系統參數設置,可能這樣更一目瞭然

我遇見的問題是一個C/S結構的問題,客戶端在windows,服務器端在Linux,客戶端編碼是GBK,但是通過上面的方法我發覺服務器端的編碼竟然是ANSI_X3.4-1968。
最簡單的方法其實是讓服務器端啓動的時候編碼也變成GBK,
下面的這些是拷貝的別人的:
在Unix平臺。打印出來的中文都是亂碼。用Log4j記錄的日誌中,中文也是?,
因爲每一個應用都會啓動一個Java進程,啓動方法就是 java $OPTS com.xxx.xxx.xxx
其中變量$OPTS就是我們要設置的JVM的啓動參數。在這裏設置JVM的字符集。設置如下:
-Ddefault.client.encoding=GBK -Dfile.encoding=GBK -Duser.language=Zh
加上這個後,基本上亂碼問題就會搞定了。如果還是搞不定,我就沒有辦法了。
log4j向文件中記錄日誌時的中文亂碼不能用上面的方法設置。設置方法爲:
打開log4j.properties文件,在裏面的文件Appender中設置輸出字符集就可以了。如下所示:
log4j.appender.buss.encoding=GBK
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章