我正在使用 Ubuntu14.04 连接到远程主机。
它的版本是:
Linux 版本 2.6.32-431.11.5.el6.yyyzzz.x86_64(gcc 版本 4.4.7 20120313(Red Hat 4.4.7-4)(GCC))#1 SMP 7 月 3 日星期四 09:42:34 CST 2014
我在该机器上上传的文件无法正确显示汉字。我打开一个文件,用 Ubuntu 随机输入汉字ibus input method
。它显示:
~R~V�~K~B~I~W个~I~N~T�饭~T~E
我在网上搜索并尝试了以下2种方法:
1:检查区域设置
It shows:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=
看来没问题。
2:安装中文支持包
我做了:
yum install "@Chinese Support"
它在那台机器上安装了 178M 文件。
之后,我打开另一个文件,并尝试使用 ibus 输入一些中文。但问题依然存在,如何解决呢?
更新1 之后我又做了一些研究。我发现有些字符可以正确输入(通过拼音输入法,ibus)。喜欢:
起 度 顿 客
它们都与它们的拼音相对应。但每个字符后面有一个自动生成的空格(不是我输入的)。
如果我尝试输入启,杜,盾,刻(它们与上述4个汉字的拼音相同)。我有:
�~P�~]~\ ~[� ~H�
根据我的经验,如果代码转换完全混乱。当我输入拼音时,我会得到一些看起来像中文但实际上不是中文的连线字符,它们永远不会与我输入的拼音相对应。
这次,情况有点不同。我可以正确输入一些字符(带有系统生成的空格),而其他字符则无法辨认。
答案1
基本上,这可能是您的语言环境(设置为UTF-8
)与中文字符文件的编码(可能是gbk
、gb2312
、gb18030
、 或 )之间不匹配的问题Big-5
。
上面列出的所有编码都是不相容和UTF-8
。
现在,我们假设gbk
是文件的编码。因此,当您尝试显示文件的内容时,gbk
编码文件会被解释为UTF-8
文件,从而导致乱码。
解决方案来了。
使用
luit
。 (首选)$ whatis luit luit (1) - Locale and ISO 2022 support for Unicode terminals
luit -encoding gbk cat a_chinese_file.txt
由于使用中的大多数(如果不是全部)编码与 兼容ASCII
,并且如果您只需要ASCII
和另一种编码中的字符,则可以使用以下两种方法。
更改终端的编码
您可以考虑一下,因为这种方法不需要安装额外的软件包。
更改您的区域设置
但我认为这需要你安装相应的语言环境。
关于上面提到的中文编码的一些细节。
gbk
、gb2312
、gb18030
是简体中文的编码。如果您不确定您的文件使用的是哪种编码,请假设它
gb18030
。每种编码中包含的字符数如下:
gb18030
>>gbk
。gb2312
高级编码是以下内容的超集。Big-5
是繁体中文的编码。
更重要的是,简体中文的编码有时被称为CP936
(Code Page 936,我认为这个名称来自Windows)。
答案2
我刚刚添加了这一行~/.bash_profile
:
export LC_ALL=en_US.UTF-8
答案3
我认为你需要更改两个文件
1) 在/etc/default/locale
LANG=" en_US.UTF-8"
LANGUAGE=" en_US:en.UTF-8"
2) 在~/.pam_environment
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
3)重启