温馨提示×

为什么linux telnet乱码

小樊
47
2026-09-09 14:21:52
栏目: 智能运维

Linux 下使用 telnet 出现乱码,通常是因为字符编码不一致终端类型不匹配。下面按常见原因和解决方法说明:


一、最常见原因:编码不一致(UTF-8 vs GBK)

现象

  • 中文显示成乱码
  • 命令输出、菜单、提示全是“锘夸宫”之类

原因

  • 本地终端是 UTF-8
  • 远端系统(尤其是老系统)使用 GBK / GB2312
  • 或反过来

解决方法

1. 本地终端改为 GBK(临时)

export LANG=zh_CN.GBK

export LC_ALL=zh_CN.GBK

然后重新 telnet。

2. 远端系统改为 UTF-8(如果可控)

export LANG=en_US.UTF-8
# 或
export LANG=zh_CN.UTF-8

3. 使用支持编码转换的工具

  • luit
luit -encoding GBK telnet ip port

二、终端类型(TERM)不匹配

现象

  • 屏幕错位
  • 颜色异常
  • 某些字符乱码

原因

  • telnet 默认 TERM 可能是 xtermvt100
  • 远端程序期望 linux 或其他类型

解决方法

export TERM=linux

export TERM=xterm

也可以在 telnet 里:

telnet
set term linux
open ip

三、Telnet 本身不支持自动协商编码

Telnet 协议不传输编码信息

所以:

  • SSH 一般不乱码(会协商)
  • Telnet 很容易乱码

建议替代方案

ssh user@host

socat -,raw,echo=0 tcp:host:port

四、远程是 Windows / 老设备(常见)

很多:

  • 交换机
  • 路由器
  • 老 Unix
  • Windows Telnet Server

它们基本只用 GBK / CP936

解决

  • 本地终端设为 GBK
  • 不要用 UTF-8

五、快速排查清单 ✅

echo $LANG
echo $TERM
locale

如果看到:

  • UTF-8 + 老设备 → 乱码正常
  • TERM=unknown → 改 TERM

总结一句话

Telnet 乱码 99% 是编码或终端类型不一致,不是网络问题。

如果你愿意,可以告诉我:

  • 连的是 Linux / Windows / 交换机 / 路由器
  • 本地系统(Ubuntu? macOS? Windows?)
  • 是否中文乱码

我可以给你精确命令

0