Что я могу сделать, чтобы исправить проблему с кодировкой после перехода с SQLite на MySQL? - PullRequest
0 голосов
/ 19 мая 2011

Я недавно развернул свое приложение. Для разработки я использовал SQLite, и до сих пор все было правильно. У меня есть контроллер, который использует Nokogiri для заполнения данных в моей базе данных.

Проблема в работе. Я использую MySQL вместо SQLite, и теперь мой скрипт заполняет данные неправильной кодировкой.

Например, он пишет "Aragón" вместо "Aragón". MySQL использует utf8 как для базы данных, так и для каждой таблицы.

Ответы [ 2 ]

0 голосов
/ 21 мая 2011

Вы ошиблись в кодировке где-то в вашем стеке. Могу поспорить, что он установлен неправильно в MySQL.

Взгляните на это: Мне нужна помощь в исправлении кодировки Broken UTF8

0 голосов
/ 21 мая 2011

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

Ваши данные могут быть проанализированы ISO-8859-1 или WIN-1252, которые являются наиболее распространенными в Интернете. Вам нужно просмотреть данные, чтобы увидеть, как они объявлены. Также посмотрите на источник для слова "Aragón" и посмотрите, имеет ли оно встроенные старшие символы или символы, закодированные в сущности. Посмотрев на значение для акцентированных символов, вы также можете получить представление о кодировке символов.

Шансы хорошие, они не UTF8, поэтому, когда Nokogiri передает их в ваш код, который записывает в базу данных, они ошибаются.

Чтобы решить эту проблему, вам нужно либо сообщить Nokogiri, что такое кодировка, либо преобразовать текст в UTF-8 перед его сохранением.

...