Строки Unicode в Ruby 1.9

Я записал сценарий Ruby, который читает файл (File.read()) это содержит unicode символы, и это хорошо работает из командной строки.

Однако, когда я пытаюсь поместить его в Рабочий процесс Automator (Mac OS X), я получаю эту ошибку;

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

Таким образом, при выполнении из Automator, разделению внезапно не нравятся не символы ASCII. Насколько я могу сказать, оба работают от той же версии Ruby (номер версии является тем же).

Я не слишком обеспокоен тем, почему они действуют отличающиеся (но если бы кто-то знает, это является большим), но я хотел бы решение заставить разделение принять не символы ASCII.

Если это помогает, я должен разделить текст в отдельном символе в две части, поэтому если бы что-то, это подобно токенизатору C, работало бы, я могу использовать это.

5
задан Jeffrey Aylesworth 23 December 2009 в 23:00
поделиться

2 ответа

Вы не указываете кодировку файла. Поскольку невозможно надежно определить кодировку файла автоматически, кодировку необходимо указать явно. Если это не так, используется внешняя кодировка, если она не установлена, будет использоваться кодировка, указанная в среде, и если среда не указывает кодировку, предполагается, что файл находится в 7 бит US-ASCII.

В вашем случае кажется, что есть разница либо в двух средах (автоматизированные сценарии часто запускаются в очень ограничительной среде без настроек локали), либо в способе вызова интерпретатора.

Итак, вам нужно сделать что-то вроде

File.read('/path/to/file', encoding: 'UTF-8')
7
ответ дан 14 December 2019 в 04:39
поделиться

Похоже, эти два приложения запускаются из разных сред - с разными значениями LOCALE.

1
ответ дан 14 December 2019 в 04:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: