有人报告我给他的使用 log4j 的程序无法正确打印字符。他告诉我“é”在文件中打印为“é”(例如:“Vidéo”变成“Vidéo”)。
这可能是一些编码问题,但我喜欢重现问题以证明它已修复。
我无法找到有关该主题的良好(且简短)文档,因此:
- 是什么导致了这个问题(log4j 如何选择编码?)?
- 可以通过简单地使用“log4j.appender.myappender.encoding=UTF-8”来修复吗?
感谢您的帮助!
WriterAppender http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/WriterAppender.html(这是基类FileAppender
及其变体。有一个setEcoding http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/WriterAppender.html#setEncoding%28java.lang.String%29方法。所以是的:使用log4j.appender.myappender.encoding=UTF-8
应该简单地工作。
但请注意,“Vidéo”变成“Vidéo”看起来像这样is编写 UTF-8,但无论您使用什么方式查看文件,都会将其解释为其他编码(通常是某种 ISO-8859-* 编码或 ISO 衍生物之一)。
Ã
是 U+00C3 且©
是U+00A9。它们在 ISO-8859-1 中编码为 0xC3 和 0xA9。
é
是U+00E9,在UTF-8中编码为0xC3 0xA9。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)