17 条回复  ·  1939 次点击
runliuv 小成 2025-11-12 17:35:42
java -Dfile.encoding=utf-8 。 要么控制台有乱码,要么 TXT 日志有乱码。反正 2 者乱一样儿。
OnlyJack 楼主 小成 2025-11-12 17:39:50
@midsolo 是的 构建了,依然不行哦 尝试过了的
OnlyJack 楼主 小成 2025-11-12 17:40:10
@julyclyde 对 其实和环境变量没啥太大关系
vvtf 初学 2025-11-12 17:41:18
java 没特别设置的不会是乱码, 你可以把日志拉到本地看下是不是 utf8 格式的. 所以大概率就是终端的乱码. 需要 exec -ti 进入容器时设置一下 LANG 试试.
OnlyJack 楼主 小成 2025-11-12 17:42:03
@shuangbiaog 加的都挺全了,依然是部分中文乱码 -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -Dstdout.encoding=UTF-8 -Dstderr.encoding=UTF-8 -Dspring.http.encoding.charset=UTF-8 -Dspring.http.encoding.enabled=true -Dspring.messages.encoding=UTF-8
OnlyJack 楼主 小成 2025-11-12 17:42:32
@vvtf exec -it 容器内是 LANG=en_US.UTF-8
OnlyJack 楼主 小成 2025-11-12 17:46:14
感谢各位大佬~ 实际上的问题出在 java 项目上,在编译的过程中 父 pom 没有指定 utf-8 导致的,包括子 pom 和运行过程中导致的。 其实这个相当于 java 项目不规范导致的,理论上都要增加 utf-8 并且要设置为全局。 父 pom 配置 UTF-8 UTF-8 子 pom 配置 UTF-8 WebApplication.java // 设置系统默认编码为 UTF-8 ,解决容器环境中文乱码问题 // 必须在 Spring Boot 启动之前设置,确保日志输出使用正确的编码 System.setProperty("file.encoding", "UTF-8"); System.setProperty("sun.jnu.encoding", "UTF-8");
julyclyde 小成 2025-11-12 18:02:25
@OnlyJack exec 那是 non login shell 的 和 java 进程的环境变量是两码事
12
返回顶部