log4j打印错误的字符

And*_*ois 5 java log4j

有人报告我,我给他使用log4j的程序没有正确打印字符.他告诉我"é"在文件中打印为"Ã"(例如:"Vidéo"变成"VidÃ"o").

这可能是一些编码问题,但我喜欢重现问题以证明它是固定的.我无法找到有关该主题的优秀(和简短)文档,因此:

  1. 导致此问题的原因(以及log4j如何选择编码?)?
  2. 可以通过简单地使用"log4j.appender.myappender.encoding = UTF-8"来修复吗?

感谢您的帮助!

Joa*_*uer 21

WriterAppender(这是它的基类FileAppender和它的变体.有一个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.


Ric*_*ich 5

如果您的用户正在通过SSH查看日志文件,那么他们需要告诉他们的SSH客户端也使用UTF-8.