/ / Formatage Unicode perdu lors de l'insertion dans la base de données MySQL dans Ruby 1.8.7 - mysql, ruby, json, unicode, utf-8

Formatage Unicode perdu lors de l'insertion dans la base de données MySQL dans Ruby 1.8.7 - mysql, ruby, json, unicode, utf-8

En Ruby, j'ai un tas de chaînes encodées en utf-8, par exemple: "HEC Montru00e9al".

Lorsque je l'insère dans ma table MySQL (au format utf8_general_ci) à l'aide de la gem "mysql", la barre oblique inverse est supprimée. Ce qui donne :) ? Certains d'entre vous ont une idée de ce qui se passe ici?

modifier:

exemple de chaîne:

>> p mystring
"HEC Montr\u00e9al"

et dans la base de données après insertion:

HEC Montru00e9al

Réponses:

2 pour la réponse № 1

Ce n'est pas UTF:

"HEC Montru00e9al"

"Ceci est une représentation ASCII d'une chaîne Unicode codée JSON. Si c'était utf-8, cela ressemblerait à ceci:

"HEC Montréal"

Vous ne décodez pas correctement vos entrées JSON quelque part ou votre code côté client envoie à votre serveur JSON lorsque votre serveur attend du texte brut.

Vous devez d’abord comprendre pourquoi vous obtenezChaînes encodées JSON lorsque vous ne les attendez pas ou que vous ne comprenez pas pourquoi vous ne décodez pas correctement votre JSON. Ensuite, vous pouvez voir si la base de données altère votre utf-8.


1 pour la réponse № 2

Je crois que vous devez explicitement dire à la gemme MySQL de s'attendre à utf8. Quelque chose comme ça:

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