Caracteres acentuados y redirección de terminal

3

Tengo problemas para tratar con caracteres acentuados en los nombres de archivo en la Terminal. Considera lo siguiente:

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

Loscaracteresacentuadosentest.txtsonincorrectos.Aquíhayalgunoshechosposiblementerelevantes:

  • EstoyusandoTerminalconlaconfiguraciónpredeterminada;lacodificacióndecaracteresseestableceenUTF-8ysecomprueba"Establecer variables de entorno de configuración regional en el inicio".
  • la salida de locale en el shell 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 predeterminada de TextWrangler es UTF-8; intentar reabrir el archivo en cualquier otra codificación solo empeora las cosas.

  • Estoy ejecutando OS 10.6.8.

Actualizar

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 hago echo leão.png > test2.txt , el texto se muestra correctamente en TextWrangler
  • Al abrir test.txt en TextEdit se muestra: leaÃÉo.png
  • Al abrir test.txt en jEdit se muestra: leaÃÉo.png
  • Al abrir test.txt en las pantallas AlphaX: leaÃÉo.png
  • La apertura de test.txt en emacs desde dentro de el terminal muestra: leão.png

Realmente me gustaría poder trabajar con nombres de archivos que no sean ASCII desde el shell. ¿Cómo puedo hacer que esto funcione?

    
pregunta Alan Munn 11.11.2011 - 19:02

1 respuesta

2

Es posible que no pueda resolver por completo tu problema, pero puedo explicar algo de lo que está pasando. La cáscara se está comportando correctamente; TextWrangler no está copiando correctamente con un requisito ligeramente avanzado.

En test.txt , tiene un a (letra minúscula A de variedades de jardín) seguido de una combinación tilde ( Unicode carácter U + 0303). La combinación de caracteres generaliza los caracteres con acentos. Para todos los efectos, ã (U + 0061 LATINA PEQUEÑA LETRA A seguida de U + 0303 COMBINANDO TILDE) debe ser equivalente a ã (U + 00E3 LATINA PEQUEÑA LATINA CON TILDE).

Muy posiblemente, si Unicode se inventara ahora, solo existirían caracteres combinados, y siempre usaríamos a ; pero Unicode también tiene muchos caracteres para la compatibilidad con codificaciones existentes anteriores. Debido a que estos son los caracteres que casi todo el mundo usa, muchos programas no admiten la combinación de caracteres tan bien, si es que lo hacen. En particular, parece que TextWrangler no los admite en absoluto y muestra una marca de "No sé qué es esto" en su lugar.

En términos generales, OSX prefiere caracteres descompuestos (es decir, letra + acento de combinación). En particular, por lo que sé, todos los nombres de archivos están normalizados a este formulario. Normalizar los nombres de 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, ya que evita ser incapaz de encontrar leão.png cuando busca leão.png . (¿No ve una diferencia entre los dos? Bien, su navegador maneja la combinación de caracteres correctamente).

La solución ideal sería utilizar un editor que maneje la combinación de caracteres correctamente. Si desea seguir usando TextWrangler, asegúrese de tener la versión más reciente y, en caso afirmativo, comuníquese con los autores para obtener ayuda. 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.

    
respondido por el Gilles 12.11.2011 - 01:50

Lea otras preguntas en las etiquetas