3 votos

Caracteres acentuados y redireccionamiento terminal

Tengo problemas con los caracteres acentuados en los nombres de los archivos de la Terminal. Considere lo siguiente:

$ touch leão.png
$ ls > test.txt
$ open -a TextWrangler test.txt

TextWrangler screen shot

Los caracteres acentuados en test.txt son incorrectos. Aquí hay algunos hechos posiblemente relevantes:

  • Estoy usando Terminal con la configuración predeterminada; la codificación de caracteres está establecida en UTF-8 y "Establecer variables de entorno de localización al inicio" está marcado.

  • la salida de locale en la cáscara es:

    LANG="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_CTYPE="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_ALL="en_US.UTF-8"
  • La codificación por defecto de TextWrangler es UTF-8; tratar de reabrir el archivo en cualquier otra codificación sólo empeora las cosas.

  • Estoy ejecutando OS 10.6.8.

Actualización

En respuesta a los comentarios, aquí hay más información:

  • La salida de od -tx1 test.txt es:

    0000000    6c  65  61  cc  83  6f  2e  70  6e  67  0a  74  65  73  74  2e
    0000020    74  78  74  0a                                                
    0000024
  • Si lo hago echo leão.png > test2.txt el texto se muestra correctamente en TextWrangler

  • Apertura test.txt en las pantallas de TextEdit: leaÃÉo.png

  • Apertura test.txt en las pantallas de jEdit: leaÃÉo.png

  • Apertura test.txt en las pantallas de AlphaX: leaÃÉo.png

  • Apertura test.txt en emacs de dentro de pantallas de la terminal: leão.png

Me gustaría mucho poder trabajar con nombres de archivos no ASCII desde el interior de la cáscara. ¿Cómo puedo hacer que esto funcione?

2voto

staffan Puntos 3299

Puede que no sea capaz de resolver completamente su problema, pero puedo explicar algo de lo que está pasando. La cáscara se está comportando correctamente; TextWrangler no está haciendo frente correctamente a un requisito ligeramente avanzado.

En test.txt tienes un a (letra A en minúsculas, variedad de jardín) seguida de una combinando tilde ( Unicode personaje U+0303). La combinación de los caracteres generalizan los caracteres con acentos. A todos los efectos, ã (U+0061 LATIN SMALL LETTER A seguido de U+0303 COMBINING TILDE) debería ser equivalente a ã (U+00E3 LETRA MINÚSCULA LATINA A CON TILDE).

Es muy posible que si se inventara el Unicode ahora, sólo existiría la combinación de personajes, y siempre usaríamos a pero el Unicode también tiene muchos caracteres para la compatibilidad con las codificaciones anteriores. Debido a que estos son los caracteres que casi todo el mundo utiliza, muchos programas no soportan la combinación de caracteres tan bien, si es que lo hacen. En particular, parece que TextWrangler no los soporta en absoluto y muestra una marca de "no sé qué es esto" en su lugar.

En términos generales, OSX prefiere los caracteres descompuestos (es decir, letra + combinación de acento). En particular, hasta donde sé, todos los nombres de archivos están normalizados a esta forma. La normalización de los nombres de los archivos (es decir, asegurarse de que si hay varias formas posibles de un nombre de archivo, siempre se utilizará una específica) es muy útil, porque evita no poder encontrar leão.png cuando estás buscando leão.png . (¿No ves la diferencia entre los dos? Bien, tu navegador maneja la combinación de caracteres correctamente).

La solución ideal sería que usaras un editor que maneje la combinación de personajes correctamente. Si quieres seguir con TextWrangler, asegúrate de tener la última versión, y si la tienes, contacta con los autores para que te ayuden. Con TextEdit, jEdit o AlphaX, todavía hay esperanza: están mostrando el archivo como Mac Roman en lugar de UTF-8 intenta cambiarlos a UTF-8.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X