Есть ли решение проблемы кодировки символов ("�") для Rails 2 / Ruby 1.8.7? - PullRequest
1 голос
/ 07 сентября 2011

Из объявления Rails 3 , в котором перечислены основные новые функции:

Прощайте с проблемами кодирования

Если вы просматриваете Интернет с любой частотой, выскорее всего, встретит символ �.Эта проблема чрезвычайно распространена и вызвана смешиванием и сопоставлением контента с различными кодировками.

В такой системе, как Rails, контент поступает из базы данных, ваших шаблонов, ваших исходных файлов и от пользователя.Ruby 1.9 предоставляет нам необработанные инструменты для устранения этих проблем, и в сочетании с Rails 3, in должен оставаться в прошлом в приложениях Rails.Никогда не боритесь с поврежденными данными, вставленными пользователем из Microsoft Word снова!

У меня есть приложение, где пользователи часто вставляют текст из MS Word, и мы сталкиваемся именно с этой проблемой.

Однакомы запускаем Rails 2 и Ruby 1.8.7.Нет непосредственной перспективы изменить это.

Я думаю, что проблема кодирования обычно проявляется в кавычках типографа («фигурные кавычки»).Вероятно, также такие вещи, как тире и символ elipses.

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

Это может быть даже утилита, работающая на системном уровне, которую я могу вызвать из своего приложения с помощью

processed_data = `system_command #{params[:incoming_data]}`

1 Ответ

2 голосов
/ 07 сентября 2011

Вы можете использовать гем rchardet для определения кодировки входящих строк, а встроенные библиотеки Iconv для преобразования строк, требующих преобразования:

require ‘rchardet’

[...]

cd = CharDet.detect(params[:my_upload_form][:uploaded_file])
encoding = cd['encoding']

converted_string = Iconv.conv(‘UTF-8′, encoding, params[:my_upload_form][:uploaded_file])

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

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