Проблема кодировки символов в Ruby - PullRequest
0 голосов
/ 05 июня 2010

Я пишу небольшой скрипт ruby, который отправляет мне электронное письмо, когда в нашу SVN добавляется новый коммит.

Я получаю лог с этим кодом:

log = `/usr/bin/svnlook log #{ARGV[0]}`

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

Я совершил это:
тес œa

Я получаю это по электронной почте:
Журнал: tes ? \ 197? \ ​​145? \ 195? \ 169? \ 195? \ 161

Как я могу решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 05 июня 2010

Да, Ruby находится в процессе поддержки Unicode (иначе). Библиотеки постоянно меняются , догоняя Ruby 1.9.

Чтобы отследить вашу ошибку, вам нужно выяснить, чем отличаются ваши два случая. Может быть, когда запускается ваш коммит хук, у него другой путь и, следовательно, другой Ruby? Это та же машина? Это тот же почтовый клиент? Это может быть на нескольких разных уровнях от интерпретатора, который читает шаблон электронной почты, до разных клиентов, читающих электронную почту. У вас есть еще информация?

0 голосов
/ 05 июня 2010

По умолчанию Ruby не поддерживает Unicode, который является кодировкой этих венгерских символов.Если вы не можете выполнять фиксацию, используя только ASCII, вам нужно изучить какую-нибудь библиотеку Unicode, например, ruby-unicode .

По моему опыту, Python гораздо лучше поддерживает Unicodeчем Ruby, поэтому, если ваш сценарий не выполняет намного больше, я бы рассмотрел Python или другой язык сценариев.

РЕДАКТИРОВАТЬ: Очевидно, что пока я не смотрел, Ruby 1.9 пошел и добавил правильно (ishПоддержка Unicode.Я сам не пробовал, но это сообщение в блоге проходит через пару упражнений, которые, я думаю, детализируют все необходимые функции (которых не так много).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...