如何在远程红帽机器上正确显示汉字?

如何在远程红帽机器上正确显示汉字?

我正在使用 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)与中文字符文件的编码(可能是gbkgb2312gb18030、 或 )之间不匹配的问题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和另一种编码中的字符,则可以使用以下两种方法。

  • 更改终端的编码

    您可以考虑一下,因为这种方法不需要安装额外的软件包。

  • 更改您的区域设置

    但我认为这需要你安装相应的语言环境。


关于上面提到的中文编码的一些细节。

  • gbkgb2312gb18030是简体中文的编码。

    如果您不确定您的文件使用的是哪种编码,请假设它gb18030

    每种编码中包含的字符数如下:gb18030>> gbkgb2312高级编码是以下内容的超集。

  • 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)重启

相关内容