Форматирование Unicode потеряно при вставке в базу данных MySQL в Ruby 1.8.7 - PullRequest
1 голос
/ 04 сентября 2011

В Ruby у меня есть набор строк, закодированных в UTF-8, например: "HEC Montr \ u00e9al".

Когда я вставляю его в свою таблицу MySQL (отформатирован как utf8_general_ci), используя гем 'mysql', обратный слеш удаляется.Что дает :) ?Кто-нибудь из вас имеет представление о том, что здесь происходит, черт возьми?

edit:

пример строки:

>> p mystring
"HEC Montr\\u00e9al"

и в базе данных после вставки:

HEC Montru00e9al

Ответы [ 2 ]

2 голосов
/ 04 сентября 2011

Это не UTF:

'HEC Montr\u00e9al'

Это ASCII-представление строки Юникода в кодировке JSON.Если бы это был UTF-8, он бы выглядел следующим образом:

'HEC Montréal'

Вы неправильно декодируете свои входные данные JSON или ваш клиентский код отправляет ваш сервер JSON, когда ваш сервер ожидает простой текст.

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

1 голос
/ 04 сентября 2011

Полагаю, вы должны явно указать гему MySQL ожидать utf8. Примерно так:

db = Mysql.init
db.options(Mysql::SET_CHARSET_NAME, 'utf8')
db.real_connect(...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...