2017-01-02 20 views
1

Mongoidモデルに保存されているUnicode(アラビア語)のテキストデータがいくつかあるので、mysqlデータベースに挿入します。私はgsubを使ってシングル引用符をエスケープしなければならなかったので、SQL挿入エラーが発生しました。私はphpMyAdminのでデータを表示するときRuby mysql gem mysqlデータベースにUnicode文字列を挿入する

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

は今私の問題は、この私が見るもの

اÙ「ÙŠÙÙ... ..Ù... U「اييناÙ「U‡ですÙØ§ØªÙØªÙØ¯Ø¹ "ÙØ§ØªØ³Ø§Ø¨" Ù「U「Ø£OO

私はforce_encoding('UTF-8')を追加しようとしたが、それは何も変更していない、私はまた、str.dumpで脱出しようとしたが、データをUnicodeに変換したphpmyadminで表示されたu {243}のようなコードポイント。どのようにこれを修正することができます。

+0

すべてのエンコーディングは、あなたがにデータを入れ_before_同意していることを確認してください。あなたは、非Unicodeのデフォルトの文字セットを使用する場合は、ユニコードデータを挿入すると、mysqlはユニコードとなり、同じバイトを格納しますが、ユニコードには変換されません。 –

+0

データベース構造では、照合順序は "utf8_general_ci"です。 – user2968505

+0

照合順序はアルファベット順です。デフォルトの_charset_は何ですか?より正確に言えば、あなたのユニコードデータが挿入された文字セットは何ですか? –

答えて

0
「SET文字セット 『UTF8』」の挿入前にこのクエリを実行することによってそれを修正

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