温馨提示×

nohup日志乱码怎么解

小樊
50
2026-09-24 19:30:30
栏目: 编程语言

nohup 本身不会制造乱码,乱码通常来自 编码不一致 或 终端/文件查看方式不对。可以按下面顺序排查和解决。


一、先确认乱码来源

1. 程序输出本来就是乱码?

先不用 nohup,直接运行程序:

python your_script.py
  • 如果直接运行也乱码 → 程序本身编码问题
  • 如果直接运行正常 → 问题在 nohup / 终端 / 查看方式

二、最常见原因 & 解决办法

✅ 1. 程序未指定 UTF-8(Python 最常见)

Python 示例(推荐写法):

import sys
import io

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')

或运行命令时指定:

PYTHONIOENCODING=utf-8 nohup python app.py > log.out 2>&1 &

✅ 2. nohup 日志文件编码不是 UTF-8

查看文件编码:

file log.out

如果是 ISO-8859 / GBK,用 iconv 转码:

iconv -f gbk -t utf-8 log.out > log.utf8

✅ 3. 查看日志的工具编码不对

✅ 用 less / vim

less log.out

如果乱码:

export LESSCHARSET=utf-8

✅ vim 临时切换

:set encoding=utf-8

❌ Windows 记事本

最容易乱码,建议用:

  • VS Code
  • Notepad++
  • Tail / less

✅ 4. 终端 locale 不对(服务器常见)

查看:

locale

如果不是 UTF-8,在启动前加:

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

再启动:

nohup python app.py > log.out 2>&1 &

三、推荐的标准写法(避免乱码)

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export PYTHONIOENCODING=utf-8

nohup python app.py > app.log 2>&1 &

四、如果你愿意,我可以更精准帮你

你可以补充:

  1. 什么语言(Python / Java / Go / Shell)
  2. 日志示例(贴一行乱码)
  3. 服务器系统(Linux 发行版)
  4. 用什么看日志(tail / less / 记事本)

我可以直接给你针对你场景的命令。

0 踩