Правильная обработка контента, отличного от UTF8, в моем приложении Rails

У меня есть приложение Rails, которое позволяет пользователям импортировать информацию из различных источников, используя RSS-каналы и тому подобное. Моя кодировка по умолчанию в базе данных — UTF8, и я получаю много исключений в отношении данных, отличных от UTF8, которые проходят через систему и дают сбой при попадании в базу данных.

Я должен правильно обнаруживать данные, отличные от UTF8, с помощью is_utf8? для атрибутов перед сохранением, но я не придумал, как с этим справиться. Я видел iconv для преобразования, но, похоже, для этого требуется определить, из какой кодировки я конвертирую.

Есть ли простой способ сделать преобразование предположений или, возможно, просто удалить символы, отличные от UTF8, а затем сохранить в базе данных?

Спасибо!


person mwilliams    schedule 04.02.2009    source источник


Ответы (2)


Как данные, отличные от UTF-8, попадают в систему? Убедитесь, что все ваши страницы обслуживаются как Content-Type text/html;charset=utf-8, и браузеры всегда будут отправлять данные UTF-8 в ваши формы.

(Конечно, остаются такие вещи, как почта и загруженные файлы, но многие из этих видов специфического контекста часто дают вам кодировку для продолжения.)

person bobince    schedule 04.02.2009

Iconv — ваш друг, когда дело доходит до переключения кодировок. Для обнаружения кодировок доступен небольшой драгоценный камень: rchardet. Мы использовали его для обнаружения Азиатские кодировки в попытке заблокировать спам и это сработало нормально.

person pantulis    schedule 04.02.2009