在 Debian 系统中,dmesg 出现“乱码”通常不是真的字符损坏,而是以下几类原因导致的显示异常或编码问题:
dmesg 输出的是内核日志,默认使用 UTF‑8。如果你的终端编码不是 UTF‑8(例如是 GBK、ISO‑8859‑1),就会看到乱码。
解决方法:
locale
确认 LANG 或 LC_ALL 是 UTF-8,例如:
LANG=en_US.UTF-8
如果不是,可临时设置:
export LANG=en_US.UTF-8
或修改 /etc/default/locale。
内核 ring buffer 中可能包含:
这些本身就不是“可读文本”,看起来像乱码是正常的。
例如:
���\x00\x01
dmesg -H 或颜色输出导致显示异常某些情况下(尤其是通过 less 或远程串口):
dmesg -H
会带颜色控制符,在不适配的终端显示为乱码。
建议:
dmesg --color=never
内核日志缓冲区有限,旧日志可能被覆盖,导致部分内容不完整,看起来像乱码。
可查看:
dmesg -T
或直接使用:
journalctl -k
在以下环境常见:
可能由于:
TERM 设置错误)可检查:
echo $TERM
如果磁盘、内存或引导过程有问题,内核可能打印异常内容。
可配合:
dmesg | grep -i error
locale
echo $TERM
dmesg --color=never | head
journalctl -k | head
如果你愿意,可以:
我可以更具体地判断是哪一种情况。