nohup 本身不会修改日志内容的编码,日志出现乱码,通常不是 nohup 的问题,而是编码环境不一致导致的。下面按常见原因逐一说明。
例如:
结果:
䏿–‡ä¹±ç
✅ 解决:
LANG / LC_ALL 未设置为 UTF‑8locale
如果看到:
LANG=C
LC_ALL=
程序可能使用 ASCII 输出中文,导致乱码。
✅ 解决:
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
然后再启动:
nohup java -jar app.jar > app.log 2>&1 &
Java 默认编码依赖系统:
java -Dfile.encoding=UTF-8 -jar app.jar
否则可能:
✅ 建议显式指定编码
例如:
✅ 解决:
iconv 转换iconv -f UTF-8 -t GBK app.log > app_gbk.log
nohup sh run.sh > log
如果 run.sh 内部:
LANG=C也会导致乱码。
✅ nohup 只做三件事:
❌ 它:
locale 是什么?export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
nohup java -Dfile.encoding=UTF-8 \
-jar app.jar > app.log 2>&1 &
如果你愿意,可以告诉我:
我可以直接帮你定位是哪一层出的问题。