Come visualizzare correttamente i caratteri cinesi sulla macchina Red-Hat remota?


8

Sto usando Ubuntu14.04 per connettermi a un host remoto.

Quale è la sua versione:

Versione Linux 2.6.32-431.11.5.el6.yyyzzz.x86_64 (versione gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)) # 1 SMP Gio 3 Lug 09:42:34 CST 2014

Il mio file di upload su quella macchina non visualizzerà correttamente i caratteri cinesi. E apro un file, digitando casualmente il carattere cinese con Ubuntu ibus input method. E mostra:

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

Ho cercato online e provato i seguenti 2 metodi:

1: esamina le impostazioni internazionali

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=

Non sembra un problema.

2: installa il pacchetto di supporto in lingua cinese

L'ho fatto:

yum install "@Chinese Support"

Ha installato i file 178M su quella macchina.

Dopodiché, apro un altro file e provo a digitare un po 'di cinese con ibus. Ma il problema rimane, come risolverlo?


update1 Ho fatto qualche altra ricerca dopo. Trovo che alcuni caratteri possano essere digitati correttamente (tramite il metodo di input Pinyin, ibus). piace:

起 度 顿 客

Sono tutti corrispondenti al loro Pinyin. Ma c'è uno spazio generato automaticamente dopo ogni personaggio (non digitato da me).

Se provo a digitare 启 , 杜 , 盾 , 刻 (hanno lo stesso Pinyin dei precedenti 4 caratteri cinesi). Ho ottenuto:

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

Per la mia esperienza, se la conversione del codice è totalmente incasinata. Quando scrivo un Pinyin, ottengo alcuni caratteri cablati che sembrano cinesi ma in realtà non lo erano, e non corrisponderanno mai a quel Pinyin che ho digitato.

Questa volta le cose sono leggermente diverse: posso digitare alcuni caratteri correttamente (con uno spazio generato dal sistema) e altri sono indecifrabili.

Risposte:


5

Fondamentalmente, questo può essere un problema di disallineamento tra la locale, che è impostato per UTF-8, e la codifica del file personaggio Chineses, che possono essere codificati in gbk, gb2312, gb18030o Big-5.

Tutte quelle codifiche sopra elencate sono incompatibili con UTF-8.

Ora supponiamo che gbksia la codifica del tuo file. Quindi, quando si tenta di mostrare il contenuto del file, un gbkfile codificato viene interpretato come un UTF-8file, il che causa il senso di incomprensioni.

Ecco la soluzione.

  • Usa luit. (Preferito)

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

    luit -encoding gbk cat a_chinese_file.txt

Poiché la maggior parte (se non tutte) la codifica in uso è compatibile con ASCIIe se sono necessari solo caratteri in ASCIIe un'altra codifica, è possibile utilizzare i due metodi seguenti.

  • Cambia la codifica del tuo terminale

    È possibile considerarlo poiché questo metodo non richiede l'installazione di un pacchetto aggiuntivo.

  • Cambia la tua locale

    Ma penso che ciò richieda l'installazione della locale corrispondente.


Alcuni dettagli sulla codifica cinese di cui sopra.

  • gbk, gb2312, gb18030Sono codifiche per il cinese semplificato.

    Se non sei sicuro di quale codifica sia utilizzata dal tuo file, assumilo gb18030.

    Numero di caratteri contenuti in ogni codifica segue questo: gb18030> gbk> gb2312. E la codifica superiore è un superset di ciò che segue.

  • Big-5 è la codifica per il cinese tradizionale.

Inoltre, la codifica per il cinese semplificato viene talvolta definita come CP936(Codice pagina 936, penso che questo nome derivi da Windows).


Per quanto riguarda il problema del terminale, posso mostrare correttamente i caratteri cinesi sul terminale come se il file fosse nel mio computer locale, ma quando lo scp sul computer remoto, i caratteri diventano irriconoscibili.
Zen,

A proposito, quando eseguo il comando luit, ho ricevuto "Avvertenza: impossibile impostare la localizzazione. Errore di segmentazione"
Zen

@Zen Ci sono troppi problemi per gestire i file non codificati UTF-8. E il mio suggerimento è di convertire il tuo file di caratteri cinesi per essere codificato UTF-8se hai il controllo su quello. Quindi tutto dovrebbe andare bene.
Pallxk,

vuoi dire che luit può convertirlo?
Zen,

luitnon può. Usa altri strumenti. Non sono sicuro di quale strumento utilizzare su Linux. Su Windows, puoi usare Notepad++.
Pallxk,

0

Ho appena aggiunto questa riga in ~/.bash_profile:

export LC_ALL=en_US.UTF-8

-1

Penso che sia necessario modificare due file come

1) In /etc/default/locale

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

2) In ~/.pam_environment

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

3) riavviare

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.