nohup 日志出现中文乱码,通常不是 nohup 本身的问题,而是字符编码不一致导致的。常见原因有下面几类:
例如:
LANG 不是 zh_CN.UTF-8查看环境:
locale
如果看到:
LANG=C
LC_ALL=
就容易出现中文乱码。
✅ 解决:
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
nohup your_command > log.out 2>&1 &
nohup command > nohup.out
日志文件本身是二进制流,不乱码,但:
cat / vim / tail 查看时例如:
✅ 解决:
iconv -f UTF-8 -t GBK nohup.out
Java 默认编码可能受系统影响:
java -Dfile.encoding=UTF-8 -jar app.jar
查看当前编码:
java -XshowSettings:properties -version 2>&1 | grep encoding
Python3 默认 UTF-8,但:
ANSI_X3.4-1968解决:
export PYTHONIOENCODING=utf-8
nohup python app.py > log.out 2>&1 &
或在代码里:
import sys
sys.stdout.reconfigure(encoding='utf-8')
脚本文件本身是 GBK,但系统按 UTF-8 读:
file script.sh
解决:
iconv -f GBK -t UTF-8 script.sh -o script_utf8.sh
这是跨平台乱码高发区。
locale 是否为 UTF-8如果你愿意,可以把:
发给我,我可以帮你精确定位是哪一层出的问题。