有人报告我,我给他使用log4j的程序无法正确打印字符。他告诉我“é”在文件中打印为“Ô(例如:“Vidéo”变为“Vidéo”)。
这可能是一些编码问题,但我喜欢重现问题以证明它是固定的。 我无法找到关于这个主题的好(和简短)文档,所以:
感谢您的帮助!
答案 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。