根本原因是客户端与服务器字符编码未对齐,必须同步设securecrt会话编码为utf-8、选中文字体,并配置服务器lang="zh_cn.utf-8";断开重连后生效。

SecureCRT连接Linux服务器后中文显示为问号、方块或乱码,根本原因是客户端与服务器两端字符编码未对齐,必须同步调整SecureCRT会话的解码方式和远程系统的输出编码,缺一不可。
设置当前会话字符编码为UTF-8
这是最直接生效的第一步,决定SecureCRT如何解读从服务器传来的字节流。
1、右键已建立的连接标签 → 选择“会话选项”;
2、左侧导航树依次展开并点击:终端 → 外观;
3、右侧找到“字符编码”下拉框,【必须选中 UTF-8】;
4、点击“确定”保存 → 断开当前连接 → 重新连接会话。
若跳过断开重连,旧连接仍沿用缓存的解码规则,乱码不会消失。
配置中文字体与字符集
仅设UTF-8编码还不够——如果字体本身不包含中文点阵或字符集声明错配,照样显示为方块或空白。
方法一:通过外观页快速设置
1、在“会话选项”窗口中,保持位于“外观”选项卡;
2、点击右侧“字体”按钮;
3、字体名称选“新宋体”或“微软雅黑”,字符集选“中文 GB2312”;
4、确认后点击主窗口“确定”保存。
方法二:全局默认字体(适用于新建会话)
Options → Global Options → Default Session → Edit Default Settings → Terminal → Appearance → Font → 选择支持中文的字体并指定字符集 → 确定。
【注意:Fixedsys等等宽字体在Windows上默认不支持中文,强行选用会导致所有中文变为空白】
统一服务器端LANG环境变量
当SecureCRT端设置无误但依然乱码,说明Linux服务器输出的原始字节不是UTF-8编码,必须修改服务端语言环境。
第一步:临时生效(立即验证,无需权限)
1、登录服务器后执行:export LANG=zh_CN.UTF-8;
2、运行 echo $LANG 确认输出为 zh_CN.UTF-8;
3、该设置仅对当前SSH会话有效。
第二步:永久生效(需root权限)
① 执行:sudo vi /etc/sysconfig/i18n;
② 将文件中原有LANG行替换为:LANG="zh_CN.UTF-8";
③ 可选增强兼容性:追加 SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en";
④ 保存退出后执行:source /etc/sysconfig/i18n;
⑤ 重新连接SecureCRT会话。
若使用Ubuntu/Debian系系统,则改写/etc/default/locale或运行sudo locale-gen zh_CN.UTF-8 && sudo update-locale LANG=zh_CN.UTF-8。
快速切换编码排查乱码类型
某些嵌入式设备或老旧系统使用GBK或GB18030编码,UTF-8无法正确解析,需手动尝试匹配。
1、工具栏右键 → “自定义工具栏”;
2、在“可用命令”中找到“字符编码”,拖入工具栏;
3、连接状态下点击该按钮,依次尝试:UTF-8 → GBK → GB18030 → GB2312;
4、中文恢复可读即为匹配成功编码。
GB18030兼容性最强,对含生僻汉字或混合编码的日志文件识别率最高。











