Rails 3 Ruby 1.9.2: символы UTF-8 показывают искаженные в консоли и вид - PullRequest
0 голосов
/ 27 сентября 2011

В моей таблице базы данных есть столбец с сопоставлением utf8_general_ci.

Файл database.yml имеет кодировку: utf8

Файл config / application.rb имеет: config.encoding = "utf-8"

Когда я использую командную строку mysql и напрямую запрашиваю поле, оно показывает: 3√5 ^ 2 = 5 ^ (2/3); 5 ^ (2/3) = 3√5 ^ 2

Когда я использую консоль rails (или просто показываю в виде) и выводю поле, которое оно показывает: 3я5 ^ 2 = 5 ^ (2/3); 5 ^ (2/3) = 3 € 5 ^ 2

Как видите, знак sqrt испорчен.

Что я делаю не так?

1 Ответ

1 голос
/ 20 января 2012

После долгих исследований я нашел решение. Кажется, что столбцы, о которых идет речь, были закодированы дважды. Раньше они имели параметры сортировки Latin1 и не были правильно преобразованы в UTF8.

Предлагаемое решение изменить столбец на BLOB и затем вернуться к ТЕКСТУ с UTF8 не работает:

ALTER TABLE t1 CHANGE c1 c1 BLOB;
ALTER TABLE t1 CHANGE c1 c1 TEXT CHARACTER SET utf8;

Что в итоге сработало:

mysqldump -uuser -ppassword --opt --quote-names --skip-set-charset --default-character-set=latin1 dbname1 table1 > dump.sql
mysql -uuser -ppassword --default-character-set=utf8 dbname1 < dump.sql
...