Правильно обрабатывать содержимое не-UTF8 в моем приложении на Rails - PullRequest
2 голосов
/ 04 февраля 2009

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

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

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

Спасибо!

Ответы [ 2 ]

1 голос
/ 04 февраля 2009

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

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

1 голос
/ 04 февраля 2009

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

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