Как правильно отображать китайские иероглифы на удаленном компьютере 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 четверг, 3 июля 09:42:34 CST 2014

Мой загружаемый файл на этом компьютере не будет правильно отображать китайские иероглифы. И я открываю файл, набираю случайно китайский иероглиф с 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�

По моему опыту, если преобразование кода полностью испорчено. Когда я набираю пиньинь, я получаю несколько проводных символов, которые выглядят как китайские, но на самом деле это не так, и они никогда не будут соответствовать тому пиньинь, который я напечатал.

На этот раз все немного по-другому. Я могу правильно ввести некоторые символы (с помощью сгенерированного системой пространства), а другие не поддаются расшифровке.

Zen
источник

Ответы:

5

В принципе, это может быть проблемой несоответствия между вашей местностью, который установлен в UTF-8и кодировании файла символов вашего, которые китайцы могут быть закодированы в gbk, gb2312, gb18030или 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и другой кодировке, вы можете использовать следующие два метода.

  • Измените кодировку вашего терминала

    Вы можете рассмотреть это, так как этот метод не требует установки дополнительного пакета.

  • Измени свой язык

    Но я думаю, что это требует от вас установки соответствующей локали.


Некоторые подробности о китайской кодировке упомянуты выше.

  • gbk, gb2312, gb18030Являются кодировки для упрощенного китайского.

    Если вы не уверены, какую кодировку использует ваш файл, примите это gb18030.

    Количество символов , содержащихся в каждом кодировании следующим образом : gb18030> gbk> gb2312. А улучшенная кодировка - это расширенная часть того, что следует.

  • Big-5 кодировка для традиционного китайского

Более того, кодировка для упрощенного китайского языка иногда упоминается как CP936(Кодовая страница 936, я думаю, это название происходит от Windows).

pallxk
источник
Что касается проблемы с терминалом, я могу правильно отображать китайские иероглифы на терминале, как если бы файл находился на моем локальном компьютере, но при обнаружении этого файла на удаленном компьютере символы становятся неузнаваемыми.
Дзен
Кстати, когда я выполнял команду luit, я получил предупреждение «Не удалось установить язык. Ошибка сегментации»
Zen
@Zen Слишком много проблем, чтобы иметь дело с файлами, не закодированными в UTF-8. И я предлагаю преобразовать ваш файл китайских символов в кодируемый, UTF-8если у вас есть контроль над этим. Тогда все должно быть хорошо.
pallxk
Вы имеете в виду, что luit может преобразовать это?
Дзен
luitне можешь. Используйте некоторые другие инструменты. Я не уверен, какой конкретный инструмент использовать в Linux. На Windows вы можете использовать Notepad++.
pallxk
0

Я только добавил эту строку в ~/.bash_profile:

export LC_ALL=en_US.UTF-8
Дай Кайсян
источник
-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) перезагрузка

Пол Чен
источник