nohup 本身不负责日志编码,它只是把程序的标准输出/错误重定向到文件(默认 nohup.out)。
日志文件的编码,取决于程序自身输出时使用的编码。
下面按常见场景说明如何“设置/控制”日志编码。
让程序以你想要的编码输出,再让 nohup 重定向
nohup java -Dfile.encoding=UTF-8 -jar app.jar > app.log 2>&1 &
nohup python -X utf8 app.py > app.log 2>&1 &
或
export PYTHONIOENCODING=utf-8
nohup python app.py > app.log 2>&1 &
export LANG=zh_CN.UTF-8
nohup ./run.sh > app.log 2>&1 &
Windows 默认是 GBK,很容易出现乱码。
chcp 65001
nohup java -Dfile.encoding=UTF-8 -jar app.jar > app.log 2>&1 &
或者直接在程序里指定编码(如 Java 的 -Dfile.encoding=UTF-8)。
file app.log
iconv -f GBK -t UTF-8 app.log > app.utf8.log
如果程序无法改编码:
nohup app > app.gbk.log 2>&1 &
# 实时转码
tail -f app.gbk.log | iconv -f GBK -t UTF-8
nohup 不管编码,编码由程序决定
✅ 正确做法:在启动命令中设置程序编码(如 UTF-8)
❌ 错误做法:只改 nohup 或终端编码
如果你能告诉我:
我可以给你精确的一行启动命令。