Параметризация Rails с использованием транслитерации Не работает со строками на арабском языке/Unicode

У меня есть строка, содержащая арабские символы "محمود"

Когда я пытаюсь параметризовать эту строку, она возвращает пустую строку ""

x = "محمود"
x.parameterize    => ""

Я проверил код параметризации и обнаружил, что он вызывает I18n.transliterate, который возвращает вопросительные знаки "?????"

Я попытался настроить транслитерацию, ссылаясь на предыдущий вопрос Как вы настроить транслитерацию в приложении Rails 3?

Но все еще возвращает пустую строку.

Любая помощь?


person Mahmoud Khaled    schedule 19.10.2011    source источник


Ответы (1)


Предполагается, что метод parameterize делает URL-адрес строки безопасным, и существует строгое ограничение на то, какие символы могут отображаться в URL-адресе. Как правило, все, что не является строго a-z, 0-9 или -, удаляется.

Вы всегда можете попытаться исправить это, чтобы многобайтовые символы UTF-8 допускались по умолчанию. Текущей реализации действительно не хватает. Вместо того, чтобы разрешать только небольшой набор определенных символов, более надежная версия исключила бы проблемные.

person tadman    schedule 19.10.2011
comment
Вы правы, мне пришлось реализовать это самому x.gsub(/\s+/, -).gsub( /[^a-zA-Z0-9أ-ي-]*/ , ) - person Mahmoud Khaled; 31.10.2011