log4j打印错误的字符

时间:2011-08-11 10:46:05

标签: java log4j

有人报告我,我给他使用log4j的程序无法正确打印字符。他告诉我“é”在文件中打印为“Ô(例如:“Vidéo”变为“Vidéo”)。

这可能是一些编码问题,但我喜欢重现问题以证明它是固定的。 我无法找到关于这个主题的好(和简短)文档,所以:

  1. 导致此问题的原因(以及log4j如何选择编码?)?
  2. 只需使用“log4j.appender.myappender.encoding = UTF-8”即可解决?
  3. 感谢您的帮助!

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:5)

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