Ruby Iconv работает с отладчиком irb и ruby, но не в модульном тесте - PullRequest
4 голосов
/ 15 июня 2010

Я использую Ruby 1.8.7 с Rails 2.3.5 на 64-битной Ubuntu 10.04. Я написал метод, который должен принимать строку, подобную этой, "École À la Découverte" и выводить имя файловой системы, например, "ecole_a_la_decouverte":

(Iconv.new('US-ASCII//TRANSLIT', 'utf-8').iconv "École À la Découverte").downcase.split.join('_')

Когда я проверяю эту строку в моем коде, проверка всегда завершается неудачей, говоря, что "cole_la_dcouverte" не равно "ecole_a_la_decouverte". Странно то, что если я вставлю строку отладчика и использую консоль отладчика, тест пройден. Кроме того, запуск этой строки вручную в irb и ./script/console, похоже, работает.

Кто-нибудь знает, что происходит и почему этот тест не пройден? Я думал только о том, что включение отладчика или irb так или иначе добавляет дополнительную поддержку UTF-8, но я не могу понять, куда идти дальше.

Заранее спасибо!

1 Ответ

0 голосов
/ 04 августа 2010

Это похоже на проблему с языковым стандартом - то же самое, что также наблюдается в php, где (иногда?) Функции iconv не работают, если не задан языковой стандарт (независимо от языкового стандарта).

См. ветку по этому вопросу на ruby-forum.com , где предлагается исправление низкого уровня, позволяющее установить языковой стандарт с помощью setlocale() в C.

Другое предложение заключается вустановить языковой стандарт .

...