2016-10-28 25 views
0

私のMySQLデータベースにデータを挿入するときに奇妙な記号が表示されています。MySQLの奇妙な文字

テーブルがUTF8_binを使用するように設定されています。シンボルは

Landon?ÇÖs 

のような?COが'ことになっています。

私はそうのようなスクリプトからMySQLのテーブルのすべての行を渡しています:

insert = ("INSERT INTO #{event.split(" : ")[0]} (`Date`, `Start`, `End`, `Location`, `Details`, `Map`) VALUES (#{event.split(" : ")[1]});").to_s 
client = Mysql2::Client.new(:host => "hostInfo", :username => "usName", :password =>"usPass", :database => "dbName") 
client.query(insert) 
client.close 

はまた、私が接続し、データベースに情報を渡すためにmysql2の宝石を使用しています。

私はいくつかの掘り出しを行いました。特別なcharを別のcharに置き換えようとすると、この出力が表示されます。コンソールが互換性のない文字エンコーディングを出力しているというエラーメッセージは、以下のとおりです。
(Encoding :: CompatibilityError)

+0

テーブルはutf8でもかまいません。 ruby-> db接続はどうですか?ルビ - >出力環境はどうですか? iso8859ディスプレイシステムにそれをダンプすると、utf8テキストを持つのに役立ちません。 –

+0

Marcでは、db接続はデフォルトのエンコーディングだけで設定されています。私は100%アウトプットエンコーディングが何であるかは確かではありませんが、処理されている情報はコンソール側でユーザーに見えるように表示されていません。 –

+1

文字はテーブル自体に '?ÇÖ'を表示していますか?もともとデータを挿入しているものであれば、元のデータを正しく挿入していることを確認してください。 ENTIRE処理チェーンは、全体を通して同じ文字セットを維持するか、または「境界」で適切な変換ロジックを持たなければなりません。 –

答えて

0

これはMySqlエンコーディングの問題です。テーブルのエンコードをutf8_general_ciに変更します。