Iconv.conv в приложении Rails для преобразования из Unicode в ASCII // транслит - PullRequest
2 голосов
/ 24 августа 2010

Мы хотели преобразовать строку Unicode на словацком языке в обычный ASCII (без акцентов / падежей). То есть: č-> c š-> s á-> a é-> e и т. Д.

Мы попробовали:

cstr = Iconv.conv('us-ascii//translit', 'utf-8', a_unicode_string)

Он работал на одной системе (Mac) и не работал на другой (Ubuntu), где он давал '?'для акцентированных символов после преобразования.

Проблема: iconv использовал переменные LANG / LC_ALL.Я не знаю, почему, когда кодировки известны, но хорошо ... Вы должны были установить переменные локали в нечто .utf8, например: sk_SK.utf8 или en_GB.utf8

Следующим шагом была попыткаустановить ENV ['LANG'] и ENV ['LC_ALL'] в config / application.rb.Это было проигнорировано Iconv в ruby.

Другая попытка состояла в том, чтобы использовать глобальные системные настройки в / etc / default / locale - это работало в командной строке, но не для приложения Rails.Причина: у apache своя среда.Поэтому окончательным решением было добавить переменные LANG / LC_ALL в / etc / apache2 / envvars:

export LC_ALL="en_GB.utf8"
export LANG="en_GB.utf8"
export LANGUAGE="en_GB.utf8"

Перезапустил Apache, и он заработал.

Это скорее немного каквопрос.Однако, если у кого-то есть лучшее решение, я бы хотел узнать об этом.

1 Ответ

0 голосов
/ 18 декабря 2011

Вместо этого вы можете попробовать unaccent .

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