在 CentOS 上使用 nohup 运行程序时日志出现乱码,通常不是 nohup 本身的问题,而是字符编码不一致导致的。下面按常见原因逐一说明,并给出解决办法。
CentOS 默认可能不是 UTF-8(尤其是老版本)。
查看当前编码:
locale
如果看到:
LANG=zh_CN.GBK
或
LANG=C
就容易出现中文乱码。
✅ 解决:
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
永久生效(推荐):
vim /etc/locale.conf
内容改为:
LANG="zh_CN.UTF-8"
例如:
就会出现乱码。
✅ 解决方式:
iconv 转换:iconv -f GBK -t UTF-8 nohup.out
nohup java -jar app.jar > nohup.out 2>&1 &
如果:
日志就会乱码。
✅ 正确做法:
nohup java -Dfile.encoding=UTF-8 -jar app.jar > nohup.out 2>&1 &
cat / vi / less 看乱码?可能是查看工具编码不对。
vim 中::set fileencoding=utf-8
Java 默认编码依赖系统:
java -jar app.jar
可能用 GBK!
✅ 强制 UTF-8:
nohup java -Dfile.encoding=UTF-8 -jar app.jar > nohup.out 2>&1 &
print("中文")
如果系统不是 UTF-8,会乱码。
✅ 解决:
export PYTHONIOENCODING=utf-8
你可以一步一步检查:
locale 是不是 UTF-8?file nohup.out 看编码export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
nohup your_command > nohup.out 2>&1 &
如果你愿意,可以把:
locale 输出发给我,我可以精准帮你定位是哪一步出的问题。