Comment afficher correctement les caractères chinois sur une machine Red-Hat distante?

8

J'utilise Ubuntu14.04 pour me connecter à un hôte distant.

Quelle est sa version:

Linux version 2.6.32-431.11.5.el6.yyyzzz.x86_64 (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)) # 1 SMP Thu Jul 3 Jul 09:42:34 CST 2014

Mon fichier de téléchargement sur cette machine n'affichera pas correctement les caractères chinois. Et j'ouvre un fichier, saisis au hasard un caractère chinois avec Ubuntu ibus input method. Et cela montre:

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

J'ai cherché en ligne et essayé les 2 méthodes suivantes:

1: examinez les paramètres régionaux

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=

Semble pas de problème.

2: installer le package de prise en charge de la langue chinoise

J'ai fait:

yum install "@Chinese Support"

Il a installé 178 millions de fichiers sur cette machine.

Après cela, j'ouvre un autre fichier et j'essaie de taper du chinois avec ibus. Mais le problème demeure, comment le résoudre?


update1 J'ai fait plus de recherches après. Je trouve que certains caractères peuvent être saisis correctement (via la méthode de saisie Pinyin, ibus). comme:

起 度 顿 客

Ils correspondent tous à leur Pinyin. Mais il y a un espace généré automatiquement après chaque caractère (non tapé par moi).

Si j'essaie de taper 启 , 杜 , 盾 , 刻 (ils ont le même Pinyin que les 4 caractères chinois ci-dessus). J'ai eu:

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

Pour mon expérience, si la conversion de code est totalement foirée. Lorsque je tape un Pinyin, j'obtiens des caractères câblés qui ressemblent au chinois mais qui ne le sont pas, et ils ne correspondront jamais au Pinyin que j'ai tapé.

Cette fois, les choses sont un peu différentes, je peux taper correctement certains caractères (avec un espace généré par le système) et d'autres sont indéchiffrables.

Zen
la source

Réponses:

5

En gros, cela peut être un problème de décalage entre vos paramètres régionaux, qui est réglé sur UTF-8, et l'encodage de votre fichier de caractères Chineses, qui peut être codé en gbk, gb2312, gb18030ou Big-5.

Tous les encodages listés ci-dessus sont incompatibles avec UTF-8.

Maintenant, supposons que gbkc'est l'encodage de votre fichier. Ainsi, lorsque vous essayez d'afficher le contenu du fichier, un gbkfichier codé est interprété comme un UTF-8fichier, ce qui provoque le charabia.

Voici la solution.

  • Utilisez luit. (Préféré)

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

    luit -encoding gbk cat a_chinese_file.txt

Étant donné que la plupart (sinon tous) l'encodage utilisé est compatible avec ASCII, et si vous n'avez besoin que de caractères ASCIIet d'un autre encodage, vous pouvez utiliser les deux méthodes suivantes.

  • Changer l'encodage de votre terminal

    Vous pouvez y penser car cette méthode ne nécessite pas l'installation d'un package supplémentaire.

  • Changez vos paramètres régionaux

    Mais je pense que cela vous oblige à installer les paramètres régionaux correspondants.


Quelques détails sur l'encodage chinois mentionné ci-dessus.

  • gbk, gb2312, gb18030Sont encodages pour le chinois simplifié.

    Si vous n'êtes pas sûr du type d'encodage utilisé par votre fichier, supposez-le gb18030.

    Nombre de caractères contenus dans chaque encodage suit ceci: gb18030> gbk> gb2312. Et l'encodage supérieur est un surensemble de ce qui suit.

  • Big-5 est l'encodage pour le chinois traditionnel.

De plus, l'encodage pour le chinois simplifié est parfois appelé CP936(page de code 936, je pense que ce nom vient de Windows).

pallxk
la source
À propos du problème de terminal, je peux afficher correctement les caractères chinois sur le terminal comme si le fichier se trouvait sur mon ordinateur local, mais lorsque je le scps vers la machine distante, les caractères deviennent méconnaissables.
Zen
Soit dit en passant, lors de l'exécution de la commande luit, j'ai obtenu "Avertissement: impossible de définir les paramètres régionaux. Erreur de segmentation"
Zen
@Zen Il y a trop de problèmes pour traiter les fichiers non encodés UTF-8. Et ma suggestion est de convertir votre fichier de caractères chinois à encoder UTF-8si vous en avez le contrôle. Alors tout devrait bien se passer.
pallxk
tu veux dire que luit peut le convertir?
Zen
luitne peux pas. Utilisez d'autres outils. Je ne sais pas quel outil utiliser sur Linux. Sous Windows, vous pouvez utiliser Notepad++.
pallxk
0

Je viens d'ajouter cette ligne dans ~/.bash_profile:

export LC_ALL=en_US.UTF-8
Dai Kaixian
la source
-1

Je pense que vous devez changer deux fichiers

1) Dans /etc/default/locale

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

2) Dans ~/.pam_environment

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

3) redémarrer

Paul Chen
la source