/ / Unicode formatação perdida ao inserir no banco de dados MySQL em Ruby 1.8.7 - mysql, ruby, json, unicode, utf-8

Formatação Unicode perdida ao inserir no banco de dados MySQL no Ruby 1.8.7 - mysql, ruby, json, unicode, utf-8

Em Ruby, eu tenho um monte de strings codificadas em utf-8, por exemplo: "HEC Montru00e9al".

Quando eu o insiro na minha tabela MySQL (formatada como utf8_general_ci) usando a gem "mysql", a barra invertida é removida. O que da :) ? Algum de vocês tem alguma ideia do que diabos está acontecendo aqui?

editar:

string de exemplo:

>> p mystring
"HEC Montr\u00e9al"

e no banco de dados após a inserção:

HEC Montru00e9al

Respostas:

2 para resposta № 1

Isso não é UTF:

"HEC Montru00e9al"

Essa é uma representação ASCII de uma cadeia Unicode codificada em JSON. Se fosse utf-8, seria semelhante a:

"HEC Montréal"

Você não está decodificando corretamente suas entradas JSON em algum lugar ou seu código do lado do cliente está enviando seu servidor JSON quando seu servidor está esperando texto sem formatação.

Primeiro você precisa descobrir por que você está ficandoJSON codifica strings quando você não está esperando por elas ou descobre porque não está decodificando corretamente seu JSON. Então você pode ver se o banco de dados está atrapalhando seu utf-8.


1 para resposta № 2

Eu acredito que você tem que dizer explicitamente a gem do MySQL para esperar utf8. Algo assim:

db = Mysql.init
db.options(Mysql::SET_CHARSET_NAME, "utf8")
db.real_connect(...