Правильная обработка символов Юникода в Rails - PullRequest
1 голос
/ 10 марта 2010

По умолчанию Rails позволяет пользователям нашего приложения вводить данные не в формате utf8, например: ¶®«¼

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

ArgumentError: invalid byte sequence in UTF-8

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

Наше окружение:

Ruby: 1.9.1
Rails 2.3.5
MySql Gem: 2.8.1

Это серьезная и насущная проблема для нас, поэтому ваши ответы очень ценятся!

1 Ответ

0 голосов
/ 24 мая 2010

Попробуйте использовать gem mysql2 (версия 0.1.6 или выше) вместо mysql.

Это все еще довольно новое, но хорошо работало для меня на производстве и будет извлекать все строки из вашей БД как utf-8.

Просто установите gem и измените файл database.yml, чтобы он содержал "adapter: mysql2"

...