¿Existe una aplicación de línea de comandos de Mac OS X que pueda convertir codificaciones de texto de un tipo a otro? (Específicamente para convertir Mac OS Roman a utf8)

16

Me gustaría llamar a una utilidad de línea de comandos en Mac OS X 10.8 que me da la capacidad de convertir un archivo de texto guardado en la codificación romana estándar de Western Mac OS al UTF-8 más genérico.

Llamaré a la utilidad desde un AppleScript que he creado. AppleScript es extremadamente lento cuando se trabaja con bloques de texto muy grandes. Como tal, quiero hacer mi análisis y conversión de texto usando la línea de comando OS X. Encontré una herramienta llamada "sed", que me permite analizar el texto. Sin embargo, todavía hay muchos elementos del archivo que deben limpiarse, caracteres que aparecen como basura si el archivo se abre como utf-8 (por ejemplo, comillas y puntos suspensivos).

Estoy pensando que forzar una conversión de codificación de texto puede ayudar a eliminar todos los caracteres no utf8 en el archivo. Sin embargo, no puedo ver cómo "sed" puede convertir fácilmente la codificación de texto.

Ya habré guardado el archivo txt temporal, como MacRoman, en el disco usando las rutinas integradas de AppleScript.

¿Alguno de ustedes tiene alguna idea sobre una herramienta de línea de comandos integrada que pueda convertir la codificación de texto? Línea de comandos para el rendimiento y la función integrada, ya que otros usuarios de mi script no necesariamente tendrán el conjunto de herramientas adecuado si no está integrado.

¡Gracias por tu ayuda!

Estrella negra
fuente
El comando es iconv.
bmargulies
@bmargulies: Cuando intento iconv en un archivo codificado en MacRoman e intento convertirlo en UTF-8, obtengo caracteres basura en lugar de los "caracteres inusuales" originales. Por ejemplo, los puntos suspensivos se convierten en "Äö√Ѭ∂‚Äö√Ѭ∂". Esperaría que los puntos suspensivos se conviertan con gracia en seis períodos. Las comillas inteligentes son las mismas, también se convierten en texto extraño, convirtiéndose en "Äö√Ñ√≤". La sintaxis que uso es: cat source.txt | iconv -f MacRoman -t UTF-8> iconv_test.txt ¿Existe una sintaxis de CLI específica que le diga a iconv que convierta correctamente todo el texto en reemplazos apropiados?
¿Y qué argumentos pasas?
bmargulies
@ Darkstar: tu mismo procedimiento funcionó bien para mí. ¿Estás seguro de que tu fuente estaba en MacRoman?
Tom Gewecke
1
Excel no debería tener este problema, usted debe ser capaz de establecer la codificación de las importaciones a lo que usted desea, por ejemplo, véase superuser.com/questions/280603/...
Tom Gewecke

Respuestas:

8

Otra forma de convertir caracteres no ASCII a variantes ASCII es usar iconv -t ASCII//TRANSLIT:

$ echo ‘’“”–—…äé | iconv -t ASCII//TRANSLIT
''""--..."a'e

ASCII//IGNOREeliminaría caracteres no ASCII, pero también puede hacerlo con, por ejemplo tr -dc '\0-\177'.

Lri
fuente
¿Permite iconvtranscribir: ä → a "?
dan
@danielAzuelos No lo sé. Sin embargo, la forma en que se reemplazan los caracteres depende de la implementación: por ejemplo, el iconv que viene con Debian reemplaza äpor just a.
Lri
28

iconv es definitivamente la herramienta de elección aquí:

iconv -f MACROMAN -t UTF-8 your-roman-encoded-file.txt > utf-8-encoded-file.txt

Ejecute iconv --listpara ver una lista de todas las codificaciones compatibles.

nohillside
fuente
una vez que descubrí que no era MacRoman, sino que era "iso-8859-1", lo intenté nuevamente. Todavía no hizo lo que quería que hiciera. No creo que iconv pueda hacer lo que quiero que haga: reemplazar con gracia todos los caracteres extendidos elegantes con puntos y apóstrofes estándar y comillas dobles.
Darkstar