¿Cómo mostrar los caracteres chinos correctamente en la máquina remota Red-Hat?

8

Estoy usando Ubuntu14.04 para conectarme a un host remoto.

Cuál es su versión:

Linux versión 2.6.32-431.11.5.el6.yyyzzz.x86_64 (gcc versión 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)) # 1 SMP jue 3 de julio 09:42:34 CST 2014

Mi archivo de carga en esa máquina no mostrará los caracteres chinos correctamente. Y abro un archivo, escribo caracteres chinos al azar con Ubuntu ibus input method. Y eso nos muestra:

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

Busqué en línea y probé los siguientes 2 métodos:

1: examinar el entorno local

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 que no hay problema.

2: instale el paquete de soporte de idioma chino

Yo hice:

yum install "@Chinese Support"

Instaló 178 millones de archivos en esa máquina.

Después de eso, abro otro archivo e intento escribir algo de chino con ibus. Pero el problema persiste, ¿cómo resolverlo?


update1 Investigué un poco más después. Me parece que algunos caracteres se pueden escribir correctamente (a través del método de entrada Pinyin, ibus). me gusta:

起 度 顿 客

Todos corresponden a su Pinyin. Pero hay un espacio automatizado generado después de cada carácter (no escrito por mí).

Si intento escribir 启 , 杜 , 盾 , 刻 (tienen el mismo Pinyin que los 4 caracteres chinos anteriores). Tengo:

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

Para mi experiencia, si la conversión del código está totalmente desordenada. Cuando escribo un Pinyin, obtendré algunos caracteres con cable que parecen chinos, pero en realidad no lo fueron, y nunca se corresponderán con el Pinyin que escribí.

Esta vez, las cosas son un poco diferentes. Puedo escribir algunos caracteres correctamente (con un espacio generado por el sistema), y otros son indescifrables.

zen
fuente

Respuestas:

5

Básicamente, esto puede ser un problema de la falta de correspondencia entre la configuración regional, que se fija a UTF-8, y la codificación del archivo de caracteres chinos, que puede ser codificado en gbk, gb2312, gb18030, o Big-5.

Todas las codificaciones mencionadas anteriormente son incompatibles con UTF-8.

Ahora, supongamos que gbkes la codificación de su archivo. Entonces, cuando intentas mostrar el contenido del archivo, un gbkarchivo codificado se interpreta como un UTF-8archivo, lo que causa el galimatías.

Aquí viene la solución.

  • Uso luit. (Privilegiado)

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

    luit -encoding gbk cat a_chinese_file.txt

Dado que la mayoría (si no todas) de las codificaciones en uso son compatibles ASCII, y si solo necesita caracteres ASCIIy otra codificación, puede usar los siguientes dos métodos.

  • Cambia la codificación de tu terminal

    Puede considerarlo ya que este método no requiere la instalación de un paquete adicional.

  • Cambia tu localidad

    Pero creo que esto requiere que instales la configuración regional correspondiente.


Algunos detalles sobre la codificación china mencionados anteriormente.

  • gbk, gb2312, gb18030Son codificaciones para chino simplificado.

    Si no está seguro de qué codificación determinada está utilizando su archivo, asúmalo gb18030.

    Número de caracteres contenidos en cada codificación sigue esto: gb18030> gbk> gb2312. Y la codificación superior es un superconjunto de lo que sigue.

  • Big-5 es la codificación para chino tradicional.

Además, la codificación para chino simplificado a veces se conoce como CP936(página de códigos 936, creo que este nombre proviene de Windows).

pallxk
fuente
Sobre el problema del terminal, puedo mostrar los caracteres chinos correctamente en el terminal como si el archivo estuviera en mi computadora local, pero cuando lo scp a la máquina remota, los caracteres se vuelven irreconocibles.
Zen
Por cierto, cuando ejecuté el comando luit, recibí "Advertencia: no se pudo establecer la configuración regional. Error de segmentación"
Zen
@Zen Hay demasiados problemas para tratar con archivos no codificados UTF-8. Y mi sugerencia es convertir su archivo de caracteres chinos para que se codifique UTF-8si tiene control sobre eso. Entonces todo debería estar bien.
pallxk
quieres decir que luit puede convertirlo?
Zen
luitno puedo. Usa algunas otras herramientas. No estoy seguro de qué herramienta determinada usar en Linux. En Windows, puede usar Notepad++.
pallxk
0

Acabo de agregar esta línea en ~/.bash_profile:

export LC_ALL=en_US.UTF-8
Dai Kaixian
fuente
-1

Creo que necesitas cambiar dos archivos como

1 en /etc/default/locale

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

2) en ~/.pam_environment

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

3) reiniciar

Paul Chen
fuente