簡體   English   中英

log4j 打印錯誤字符

[英]log4j prints wrong characters

有人報告說我給他的使用 log4j 的程序不能正確打印字符。 他告訴我“é”在文件中打印為“é”(例如:“Vidéo”變成“Vidéo”)。

這可能是一些編碼問題,但我喜歡重現問題以證明它已修復。 我無法找到關於這個主題的好的(和簡短的)文檔,所以:

  1. 是什么導致了這個問題(以及 log4j 是如何選擇編碼的?)?
  2. 可以通過簡單地使用“log4j.appender.myappender.encoding=UTF-8”來修復它嗎?

感謝您的幫助!

WriterAppender (這是FileAppender及其變體的基本 class 。具有setEcoding方法。所以是的:使用log4j.appender.myappender.encoding=UTF-8應該可以簡單地工作。

但是請注意,“Vidéo”變成“Vidéo”看起來像是寫 UTF-8,但是無論您使用什么來查看文件,都會將其解釋為其他編碼(通常是一些 ISO-8859-* 編碼或 ISO 之一-衍生物)。

Ã是 U+00C3, ©是 U+00A9。 它們在 ISO-8859-1 中被編碼為 0xC3 和 0xA9。

é是 U+00E9,在 UTF-8 中編碼為 0xC3 0xA9。

如果您的用戶正在查看 SSH 上的日志文件,那么他們需要告訴他們的 SSH 客戶端也使用 UTF-8。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM