Domanda

Ho scritto uno script di Ruby che sta leggendo un file (File.read()) che contiene caratteri Unicode, e funziona bene dalla riga di comando.

Tuttavia, quando provo a metterlo in un flusso di lavoro Automator (Mac OS X), ottengo questo errore;

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

Quindi, durante l'esecuzione da Automator, divisi improvvisamente non ama i caratteri non ASCII. Per quanto posso dire, entrambi sono in esecuzione della stessa versione di Ruby (il numero di versione è lo stesso).

Io non sono troppo preoccupato per questo che agiscono diversi (ma se qualcuno lo sa, che è grande), ma vorrei una soluzione per rendere spaccatura accettare i caratteri non ASCII.

Se aiuta, ho bisogno di dividere il testo in un singolo carattere in due pezzi, quindi se qualcosa che è simile a tokenizer di C avrebbe funzionato, posso usare quello.

È stato utile?

Soluzione

Non si specifica la codifica del file. Dal momento che non è possibile determinare in modo affidabile la codifica di un file automaticamente, la codifica deve essere specificato esplicitamente. Se non lo è, la codifica esterno viene utilizzato, se ciò non è impostato, la codifica specificata nell'ambiente sta per essere utilizzato, e se l'ambiente non specifica una codifica, il file viene considerato in 7 po 'US-ASCII.

Nel tuo caso, sembra che non v'è né una differenza nei due ambienti (script automatici sono spesso eseguiti in un ambiente molto restrittivo senza impostazioni locali) o nel modo in cui l'interprete viene invocato.

Quindi, avresti bisogno di fare qualcosa di simile

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

Altri suggerimenti

Suona come i due sono utilizzati attraverso ambienti diversi -. Con differenti valori di locale

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top