¿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)

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 a la UTF-8 más genérica.

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 tipográficas y puntos suspensivos).

Estoy pensando que forzar una conversión de codificación de texto puede ayudar a eliminar todos los caracteres que no sean 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 utilizando las rutinas integradas de AppleScript.

Requisitos:

  • Línea de comandos para el rendimiento
  • Prefiero las herramientas nativas, ya que otros usuarios de mi secuencia de comandos no necesariamente tendrán el conjunto de herramientas adecuado si no está integrado. (Aunque podría agregar una verificación a mi secuencia de comandos y cancelar si la herramienta necesaria no está presente)

¿Alguno de ustedes tiene alguna idea sobre una herramienta de línea de comandos integrada que pueda convertir la codificación de texto o un paquete existente que sea superior para esta tarea?

@bmargulies: En realidad, lo que realmente estoy tratando de obtener es un medio para convertir automáticamente caracteres elegantes, como puntos suspensivos y comillas tipográficas en comillas ASCII "reales", "puras", apóstrofes y puntos. ¿Iconv puede hacer eso? ¿O tengo que convertir manualmente los archivos?
@TomGewecke: En realidad, la fuente no era MacRoman, era "iso-8859-1". Sin embargo, el uso de iconv no reemplazó elegantemente (y automáticamente) las comillas elegantes y los puntos suspensivos con comillas y puntos ASCII estándar.
¿Hay alguna razón por la que deba tener ascii en lugar del utf-8 que solicitó originalmente? Por supuesto, no hay un equivalente ascii de muchos caracteres en MacRoman o ISO Latin 1, así que no creo que puedas hacer lo que quieras con este tipo de utilidad. Probablemente sea necesario buscar/reemplazar.
@TomGewecke: La razón por la que estoy tratando de simplificar las cosas es porque los archivos CSV que mi AppleScript está creando se ven feos en Excel debido a la presencia de estos caracteres que no son ASCII. Microsoft Excel (tanto en Windows como en Mac) es el único programa que tiene problemas para importar los archivos CSV que están codificados en iso-8859-1.
Excel no debería tener este problema, debería poder configurar la codificación para las importaciones a lo que quiera, por ejemplo, consulte superuser.com/questions/280603/…
→ Darkstar: para UCI, site.icu-project.org .

Respuestas (2)

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 los caracteres que no son ASCII, pero también puede hacerlo, por ejemplo, con tr -dc '\0-\177'.

¿Permite iconvtransliterar: ä → a" ?
@danielAzuelos No sé. Sin embargo, la forma en que se reemplazan los caracteres depende de la implementación: por ejemplo, el icono que viene con Debian se reemplaza äsolo con a.

iconves 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 admitidas.

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