奇了个怪了明明是同样的系统,只是换个 IP 的功夫咋就出现乱码的问题了呢?
前因
好不容易的在商家批量换 IP 的等待时间过后能 SSH 连接上去了,在修改好 interfaces 文件恢复网络后,就老规矩的用终端文本浏览器访问自己的网站试试。
哪料不知道怎么滴就换了 IP 的功夫,这次自己的网页中文咋就全是乱码的状态?
后果
系统的字符集编码
一开始还以为是系统出差错了,遂折腾的是系统的字符集的设置。
- 安装
区域设置(locale)软件apt install -y locales locales-all
大部分情况下应该已经默认安装了,若已经安装则可以跳过此步骤。
- 配置字符集
- 打开
设定 locales的界面dpkg-reconfigure locales
- 下拉到下面的
zh_CN.UTF-8 UTF-8选项,按空格键勾选需要的字符集,随后再按Tab键让光标处于OK处,这时点击回车键进行保存确认。
题外话:不知道勾选全部会怎么样?
- 再在
系统环境默认的区域设置(locale)选择中选择zh_CN.UTF-8作为默认的字符集,按回车键进行选中。
- 打开
- 下载中文字体
apt-get install -y xfonts-intl-chinese fonts-wqy-zenhei fonts-wqy-microhei xfonts-wqy
如有特殊需求也可自行挑选字体安装使用。
- 重启系统
reboot
- 检查
/etc/default/locale文件可知,字符集从空值变成了本次设置后的字符集。root@ChiuYut-VM:~# cat /etc/default/locale # File generated by update-locale LANG=zh_CN.UTF-8
亦可以直接明了的修改该文件来配置对应的字符集,例如:
LANG=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8 LC_CTYPE=zh_CN.UTF-8
Xshell 软件的字符集
修改了系统的默认字符集过后发现还是会出现中文乱码的问题,在w3m浏览器的右键弹出框时发现全都是乱码。
最后细看才发现除了有所谓的中文乱码之外,就连英文字符的制表符都以?代替。眼见如此我就有些怀疑或许就是软件的问题了吧,虽将新旧 IP 的两个连接信息做出比较,这一番对比下来遂发现疑似的问题所在!
我是基于 Xshell 软件进行的修改,如果是其他 SSH 软件则另说。对于这个修改我也是基于当个对话修改的,没有对全局默认属性做出更改。
- 选择对应的
会话,点击鼠标右键,在弹出的菜单中选择属性。 - 在弹出的属性会话框中,选择左边类别的
终端分类,再再右侧的转换配置中的下拉框选择Unicode(UTF-8),点击确认保存
题外话
经过这一通操作之后,系统的一些显示变成了中文,同时发现之前安装的w3m也变成了中文。在昨天时看到别人的w3m界面是中文还在想着要如何设置,没想到原来设置就是如此简单。就是支持在界面中修改语言的无效,应该就是对应的软件没有中文语言包的缘故。
不过也有局限就是,或许就是因为links2的中文是用.代替的缘故,与这字符集无关而无法解决无法显示中文的问题。当然在links2中已经将字符集修改为UTF-8这样的错误不会犯。
修改软件的字符集后差点让我遇到了“电车难题”,另外一个会话在修改了软件的字符集之后会导致其中一个自定义的登录脚本乱码,若是改回默认的自动字符集虽然脚本不会乱码了,但是因为变成中文后,变成中文显示的字符均乱码显示,严重破坏使用体验。在反复折腾两次后就还是让脚本乱码而保其余的正常使用,没一会才突然想起应该是和我修改字符集前用vi添加的这个脚本有关,后面将这个登录脚本换成 SFTP 的方式上传的即可解决。或许这时再用vi编辑的方式添加也是能解决这“电车难题”的。
参考
ChiuYut
2026年05月03日