Wie werden chinesische Schriftzeichen auf einem Red-Hat-Remote-Computer korrekt angezeigt?


8

Ich verwende Ubuntu14.04, um eine Verbindung zu einem Remote-Host herzustellen.

Welche seine Version ist:

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 Do 3. Juli 09:42:34 CST 2014

In meiner Upload-Datei auf diesem Computer werden chinesische Schriftzeichen nicht korrekt angezeigt. Und ich öffne eine Datei, tippe zufällig chinesisches Zeichen mit Ubuntu ibus input method. Und es zeigt:

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

Ich habe online gesucht und die folgenden 2 Methoden ausprobiert:

1: Untersuchen Sie das Gebietsschema

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=

Scheint kein Problem zu sein.

2: Installieren Sie das Support-Paket für die chinesische Sprache

Ich tat:

yum install "@Chinese Support"

Auf diesem Computer wurden 178 Millionen Dateien installiert.

Danach öffne ich eine andere Datei und versuche, mit ibus Chinesisch zu tippen. Aber das Problem bleibt, wie man es löst?


update1 Ich habe danach noch etwas recherchiert. Ich finde, dass einige Zeichen korrekt eingegeben werden können (über die Pinyin-Eingabemethode, ibus). mögen:

起 度 顿 客

Sie entsprechen alle ihrem Pinyin. Es gibt jedoch nach jedem Zeichen ein automatisch generiertes Leerzeichen (nicht von mir eingegeben).

Wenn ich versuche, 启 , 杜 , , 盾 , einzugeben (sie haben das gleiche Pinyin wie die obigen 4 chinesischen Schriftzeichen). Ich habe:

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

Nach meiner Erfahrung, wenn die Codekonvertierung völlig durcheinander ist. Wenn ich ein Pinyin tippe, bekomme ich einige verdrahtete Zeichen, die wie Chinesisch aussehen, aber eigentlich nicht waren, und sie werden niemals dem Pinyin entsprechen, das ich getippt habe.

Diesmal sind die Dinge etwas anders. Ich kann einige Zeichen korrekt eingeben (mit einem vom System generierten Leerzeichen), andere sind nicht zu entziffern.

Antworten:


5

Grundsätzlich kann dies ein Problem der Nichtübereinstimmung zwischen locale sein, die festgelegt ist UTF-8, und die Codierung der Chineses Zeichendatei, die in codiert werden kann gbk, gb2312, gb18030, oder Big-5.

Alle oben aufgeführten Codierungen sind nicht kompatibel mit UTF-8.

Nehmen wir nun an, es gbkhandelt sich um die Codierung Ihrer Datei. Wenn Sie also versuchen, den Inhalt der Datei anzuzeigen, wird eine gbkcodierte Datei als UTF-8Datei interpretiert , die den Kauderwelsch verursacht.

Hier kommt die Lösung.

  • Verwenden Sie luit. (Bevorzugt)

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

    luit -encoding gbk cat a_chinese_file.txt

Da die meisten (wenn nicht alle) verwendeten Codierungen mit kompatibel ASCIIsind und Sie nur Zeichen ASCIIund eine andere Codierung benötigen , können Sie die folgenden zwei Methoden verwenden.

  • Ändern Sie die Codierung Ihres Terminals

    Sie können dies in Betracht ziehen, da für diese Methode kein zusätzliches Paket installiert werden muss.

  • Ändern Sie Ihr Gebietsschema

    Ich denke jedoch, dass Sie dazu das entsprechende Gebietsschema installieren müssen.


Einige Details zur oben erwähnten chinesischen Kodierung.

  • gbk, gb2312, gb18030Sind Codierungen für vereinfachtes Chinesisch.

    Wenn Sie nicht sicher sind, welche bestimmte Codierung Ihre Datei verwendet, nehmen Sie diese an gb18030.

    Anzahl der Zeichen in jeder Codierung enthaltenen folgt aus: gb18030> gbk> gb2312. Und die überlegene Codierung ist eine Obermenge dessen, was folgt.

  • Big-5 ist die Kodierung für traditionelles Chinesisch.

Darüber hinaus wird die Codierung für vereinfachtes Chinesisch manchmal als CP936(Code Page 936, ich denke, dieser Name stammt von Windows) bezeichnet.


In Bezug auf das Terminalproblem kann ich die chinesischen Zeichen auf dem Terminal korrekt anzeigen, als ob sich die Datei auf meinem lokalen Computer befinden würde. Wenn Sie sie jedoch auf den Remotecomputer übertragen, werden die Zeichen nicht mehr erkennbar.
Zen

Übrigens, als ich den Befehl luit ausführte, bekam ich "Warnung: Gebietsschema konnte nicht eingestellt werden. Segmentierungsfehler"
Zen

@Zen Es gibt zu viele Probleme, um mit nicht codierten Dateien umzugehen UTF-8. Und mein Vorschlag ist, Ihre chinesische Zeichendatei so zu konvertieren, dass sie codiert wird, UTF-8wenn Sie die Kontrolle darüber haben. Dann sollte alles in Ordnung sein.
Pallxk

du meinst luit kann es konvertieren?
Zen

luitkann nicht. Verwenden Sie einige andere Werkzeuge. Ich bin mir nicht sicher, welches Tool ich unter Linux verwenden soll. Unter Windows können Sie verwenden Notepad++.
Pallxk

0

Ich habe gerade diese Zeile hinzugefügt in ~/.bash_profile:

export LC_ALL=en_US.UTF-8

-1

Ich denke, Sie müssen zwei Dateien als ändern

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) Neustart

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.