nohup 日志出现中文乱码,通常不是 nohup 本身的问题,而是字符编码不一致导致的。下面按常见原因和解决办法说明。
结果:日志文件里中文变成乱码
常见于服务器:
echo $LANG
# 可能是
zh_CN.GBK
C
POSIX
nohup 启动的程序会继承这些环境,导致编码异常。
例如:
nohup java -jar app.jar > log.out 2>&1 &
如果 JVM 或脚本内部没指定编码,就会用系统默认编码。
file log.out
或
enca log.out
locale
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
再启动:
nohup java -jar app.jar > log.out 2>&1 &
nohup java -Dfile.encoding=UTF-8 -jar app.jar > log.out 2>&1 &
# -*- coding: utf-8 -*-
import sys
sys.stdout.reconfigure(encoding='utf-8')
iconv -f GBK -t UTF-8 log.out > log_utf8.out
less log.out
vim log.out
✅ 服务器统一用 UTF-8
✅ nohup 前先 export LANG=zh_CN.UTF-8
✅ 程序内部显式指定编码
✅ 日志文件用 UTF-8 保存和查看
如果你愿意,可以告诉我:
我可以给你精确的一行解决方案。