Como exibir caracteres chineses corretamente na máquina Red-Hat remota?


8

Estou usando o Ubuntu14.04 para conectar-se a um host remoto.

Qual é a sua versão:

Linux versão 2.6.32-431.11.5.el6.yyyzzz.x86_64 (versão gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)) # 1 SMP quinta-feira, 3 de julho de 09:42:34 CST 2014

Meu arquivo de upload nessa máquina não exibirá caracteres chineses corretamente. E eu abro um arquivo, digite aleatoriamente Caractere chinês com o Ubuntu ibus input method. E isso mostra:

~R~V�~K~B~I~W个~I~N~T�饭~T~E

Pesquisei online e tentei os 2 métodos a seguir:

1: examine o código do idioma

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=

Parece não ter problema.

2: instalar o pacote de suporte ao idioma chinês

Eu fiz:

yum install "@Chinese Support"

Ele instalou arquivos 178M nessa máquina.

Depois disso, abro outro arquivo e tento digitar chinês com ibus. Mas o problema permanece, como resolvê-lo?


update1 Fiz mais algumas pesquisas depois. Acho que alguns caracteres podem ser digitados corretamente (através do método de entrada Pinyin, ibus). gostar:

起 度 顿 客

Todos eles correspondem ao seu Pinyin. Mas há um espaço gerado automaticamente após cada caractere (não digitado por mim).

Se eu tentar digitar 启 , 杜 , 盾 刻 (eles têm o mesmo Pinyin que os 4 caracteres chineses acima). Eu tenho:

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

Pela minha experiência, se a conversão do código estiver totalmente bagunçada. Quando digito um Pinyin, recebo alguns caracteres com fio que se parecem com chineses, mas na verdade não eram, e eles nunca correspondem ao Pinyin que eu digitei.

Desta vez, as coisas são um pouco diferentes. Posso digitar alguns caracteres corretamente (com um espaço gerado pelo sistema) e outros são indecifráveis.

Respostas:


5

Basicamente, isso pode ser um problema de incompatibilidade entre sua localidade, que é definido para UTF-8, e a codificação do seu arquivo de caracteres Chineses, o que pode ser codificado em gbk, gb2312, gb18030, ou Big-5.

Todas as codificações listadas acima são incompatíveis com UTF-8.

Agora, vamos assumir que gbké a codificação do seu arquivo. Portanto, quando você tenta mostrar o conteúdo do arquivo, um gbkarquivo codificado é interpretado como um UTF-8arquivo, o que causa a confusão.

Aí vem a solução.

  • Use luit. (Preferido)

    $ whatis luit
    luit (1)             - Locale and ISO 2022 support for Unicode terminals
    

    luit -encoding gbk cat a_chinese_file.txt

Como a maioria das codificações (se não todas) em uso é compatível e ASCII, se você precisar apenas de caracteres ASCIIe outra codificação, poderá usar os dois métodos a seguir.

  • Mude a codificação do seu terminal

    Você pode considerar isso, pois esse método não requer a instalação de um pacote adicional.

  • Alterar sua localidade

    Mas acho que isso requer que você instale o código do idioma correspondente.


Alguns detalhes sobre a codificação chinesa mencionada acima.

  • gbk, gb2312, gb18030São codificações para chinês simplificado.

    Se você não tiver certeza de qual codificação está sendo usada pelo arquivo, assuma-a gb18030.

    Número de caracteres contidos em cada codificação segue esta: gb18030> gbk> gb2312. E a codificação superior é um superconjunto do que se segue.

  • Big-5 é a codificação para chinês tradicional.

Além disso, às vezes a codificação para chinês simplificado é referida como CP936(página de código 936, acho que esse nome vem do Windows).


Sobre o problema do terminal, posso mostrar os caracteres chineses corretamente no terminal como se o arquivo estivesse no meu computador local, mas quando o scp é enviado para a máquina remota, os caracteres ficam irreconhecíveis.
Zen

A propósito, ao executar o comando luit, recebi "Aviso: não foi possível definir a localidade. Falha na segmentação"
Zen

@ Zen Há muitos problemas para lidar com arquivos não codificados UTF-8. E minha sugestão é converter o arquivo de caracteres em chinês para ser codificado UTF-8se você tiver controle sobre isso. Então tudo deve ficar bem.
Pallxk

você quer dizer luit pode convertê-lo?
Zen

luitnão podes. Use algumas outras ferramentas. Não tenho certeza de qual ferramenta usar no linux. No Windows, você pode usar Notepad++.
pallxk

0

Acabei de adicionar esta linha em ~/.bash_profile:

export LC_ALL=en_US.UTF-8

-1

Eu acho que você precisa alterar dois arquivos como

1) Em /etc/default/locale

LANG=" en_US.UTF-8"
LANGUAGE=" en_US:en.UTF-8"

2) Em ~/.pam_environment

LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8

3) reiniciar

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.