有人告訴我,我給他使用log4j的程序不能正確打印字符。他告訴我「é」在文件中被打印爲「Ã」(例如:「Vidéo」變成「Vidéo」)。log4j打印錯誤的字符
這可能是一些編碼問題,但我喜歡重現問題以證明它是固定的。 我無法找到關於這個問題的好(短)文件:(?以及如何log4j的選擇編碼)
- 是什麼原因導致這個問題?
- 可以通過簡單地使用「log4j.appender.myappender.encoding = UTF-8」來修復嗎?
謝謝你的幫助! 。
有人告訴我,我給他使用log4j的程序不能正確打印字符。他告訴我「é」在文件中被打印爲「Ã」(例如:「Vidéo」變成「Vidéo」)。log4j打印錯誤的字符
這可能是一些編碼問題,但我喜歡重現問題以證明它是固定的。 我無法找到關於這個問題的好(短)文件:(?以及如何log4j的選擇編碼)
謝謝你的幫助! 。
WriterAppender
(這是基類FileAppender
及其變種擁有setEcoding
方法,所以,是的:。用log4j.appender.myappender.encoding=UTF-8
應該只是工作
注意,但是,「視頻」成爲「維達©o」的長相喜歡它是寫作UTF-8,但無論你用它來查看該文件解釋爲一些其他的編碼(通常這是一些ISO-8859- *編碼或ISO衍生物之一)。
Ã
爲U + 00C3和©
爲U + 00A9,它們在ISO-8859-1中被編碼爲0xC3和0xA9
é
是U + 00E9,它被編碼爲UTF-8中的0xC3 0xA9。
即使您沒有設置它,它也會使用其他編碼進行編寫。任何不能被編碼的東西都會是問號(?),但這似乎並不是這種情況,所以如果你發現使用了什麼編碼(可能是操作系統默認),那麼文件仍然可讀。 – Thilo
當然,UTF-8是最好的,因爲它可以編碼所有東西。明確地配置它總是一個好主意,而不是從安裝到安裝。 – Thilo
感謝您的快速回復。沒有指定時,LOG4J如何選擇編碼? – AndrewBourgeois
如果您的用戶通過SSH查看日誌文件,那麼他們需要告訴他們的SSH客戶端也使用UTF-8。
''是一個吸菸槍,你正在查看UTF-8數據爲原始字符。 –