在 Java 中使用 Logger(通常指 java.util.logging.Logger)时出现中文乱码,根本原因是字符编码不一致:写日志时使用的编码与读取/显示日志时使用的编码不同。
下面按常见场景说明原因和解决办法。
Logger 默认把日志输出到 控制台(System.out / System.err)例如:
logger.info("中文日志测试");
在 Windows 命令行可能显示:
??????
如果你配置了 FileHandler:
FileHandler fh = new FileHandler("log.txt");
logger.addHandler(fh);
默认 FileHandler 不是 UTF-8 编码(通常是系统默认编码)
java.util.logginglog4j / logback / slf4j不同框架默认编码不同,配置没有统一
启动 Java 时加参数:
java -Dfile.encoding=UTF-8 -jar app.jar
或 IDE 中:
-Dfile.encoding=UTF-8
✅ 这是最通用、最根本的方法
FileHandler fh = new FileHandler("log.txt", true);
fh.setEncoding("UTF-8");
logger.addHandler(fh);
java.util.logging.FileHandler.encoding=UTF-8
启动参数:
-Djava.util.logging.config.file=logging.properties
-Dfile.encoding=UTF-8
<encoder>
<pattern>%d %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
现代项目几乎都推荐 Logback + SLF4J
-Dfile.encoding=UTF-8如果你愿意,可以告诉我:
java.util.logging 还是 log4j/logback我可以给你精准配置示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。