2017-01-02 5 views
1

So habe ich einige Unicode (Arabisch) Textdaten in einem Mongoid-Modell gespeichert und ich möchte es in eine MySQL-Datenbank einfügen. Ich musste gsub verwenden, um einfache Anführungszeichen zu umgehen, da dies SQL-Einfügefehler verursachte.Ruby mysql gem Einfügung Unicode String in MySQL-Datenbank

text = model.text.squish().gsub("'", %q(\\\')) 
db_con.query("insert into table (text) values ('#{text}')") 

Nun mein Problem ist, wenn ich die Daten in phpMyAdmin sehen das, was ich sehe

ا٠„ÙŠÙÙ ... .. Ù ... لايي٠† ا٠„Ù ‡ Ùات٠تÙدع "Ùاتساب" Ù „Ù„Ø £ oo

ich habe versucht, das Hinzufügen force_encoding('UTF-8') aber das hat nichts zu ändern, ich habe auch versucht, mit str.dump zu entkommen, aber Das hat die Daten in Unicode umgewandelt Codepunkte wie u {243} bei der Anzeige in phpmyadmin. Wie kann das behoben werden?

+0

Stellen Sie sicher, alle Ihre Codierungen _before_ stimmen Sie die Daten in. Wenn Sie eine Standard-Zeichensatz von Nicht-Unicode verwenden, und dann Unicode-Daten einfügen, mysql wird nicht wissen, dass es unicode sein wird und wird die gleichen Bytes speichern, aber nicht in Unicode konvertieren (weil Sie gesagt haben, dass es bereits in Unicode war). –

+0

In der Datenbankstruktur ist die Sortierung "utf8_general_ci". – user2968505

+0

Sortierung ist nur für alphabetische Reihenfolge. Was ist der Standardwert _charset_? Oder genauer, mit welchem ​​Zeichensatz wurden Ihre Unicode-Daten eingefügt? –

Antwort

0

es behoben, durch diese Abfrage vor dem Einfügen „SET CHARACTER SET‚UTF8‘“ Ausführen

text = model.text.squish().gsub("'", %q(\\\')) 
db_con.query("SET CHARACTER SET 'UTF8'") 
db_con.query("insert into table (text) values ('#{text}')")