Pregunta

He escrito un script Ruby que está leyendo un archivo (File.read()) que contiene caracteres Unicode, y funciona bien desde la línea de comandos.

Sin embargo, cuando trato de ponerlo en un flujo de trabajo de Automator (Mac OS X), me sale este error;

2009-12-23 17:55:15 -0500: /Users/jeffreyaylesworth/bin/symbols:19:in `split': invalid byte sequence in US-ASCII (ArgumentError)
(traceback)

Así que cuando se ejecuta desde Automator, Split repente no le gustan los caracteres no ASCII. Por lo que yo puedo decir, ambos están funcionando de la misma versión de Ruby (el número de versión es la misma).

No estoy demasiado preocupado por eso que están actuando diferente (pero si alguien sabe, que es grande), pero me gustaría una solución para hacer dividida acepta caracteres no ASCII.

Si ayuda, necesito dividir el texto en un solo carácter en dos partes, por lo que si algo que es similar a la de C tokenizer funcionaría, puedo usar eso.

¿Fue útil?

Solución

No se especifica la codificación del archivo. Dado que es imposible de determinar con fiabilidad la codificación de un archivo de forma automática, la codificación se debe especificar de forma explícita. Si no lo es, se utiliza la codificación externa, si es que no está establecido, la codificación especificada en el ambiente se va a utilizar, y si el entorno no especifica una codificación, el archivo se supone que está en 7 bits US-ASCII.

En su caso, parece que o bien hay una diferencia en los dos ambientes (scripts automatizados son a menudo ejecutan en un entorno muy restrictivo y sin opciones de localización) o en la forma en que el intérprete se invoca.

Por lo tanto, lo que se necesita para hacer algo como

File.read('/path/to/file', encoding: 'UTF-8')

Otros consejos

Sonidos como los dos están en ejecución de diferentes entornos -. Con diferentes valores LOCALE

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top