如何在远程Red Hat机器上正确显示汉字?


8

我正在使用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 2014年7月3日星期四09:42:34 CST

我在那台机器上的上传文件无法正确显示中文字符。然后打开一个文件,用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输入一些中文。但是问题仍然存在,如何解决呢?


update1之后, 我做了更多研究。我发现可以正确键入一些字符(通过拼音输入法,ibus)。喜欢:

起 度 顿 客

它们都对应于拼音。但是每个字符后都有一个自动生成的空间(我没有键入)。

如果我尝试键入启,杜,盾,刻(它们的拼音与上述4个汉字相同)。我有:

�~P�~]~\ ~[� ~H�

以我的经验,如果代码转换完全搞砸了。当我输入拼音时,我会得到一些看起来像中文但实际上却不是中文的有线字符,并且它们永远不会对应于我键入的拼音。

这次,情况有所不同。我可以正确键入一些字符(使用系统生成的空格),而其他字符则无法辨认。

Answers:


5

基本上,这可以是你的区域设置,其被设置为之间的失配的问题UTF-8,你的Chineses字符文件的编码,其可以在被编码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> gbk> gb2312。出色的编码是其后的超集。

  • Big-5 是繁体中文的编码。

更重要的是,简体中文的编码有时被称为CP936(代码页936,我认为这个名称来自Windows)。


关于终端问题,我可以在终端上正确显示中文字符,就像文件在本地计算机中一样,但是当将其scp到远程计算机时,这些字符变得无法识别。
2014年

顺便说一句,EXCUTE的luit命令时,我得到“警告:无法设置区域分割的错。”

@Zen有太多问题无法处理未使用编码的文件UTF-8。我的建议是,UTF-8如果您对此有控制权,则将其转换为要编码的中文字符文件。然后,一切都会好起来的。
pallxk

你的意思是爱欲可以转化吗?
2014年

luit不能。使用其他工具。我不确定在Linux上使用哪个特定工具。在Windows上,您可以使用Notepad++
2014年


-1

我认为您需要更改两个文件

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.