9

だから私はスクレーパーを作り、いくつかのオブジェクトを引っ張っています. 問題は、一部が外国語であり、mysql db が少しつまずいていることです。これは私が得たエラーです。これで何ができるか考えていますか?ありがとう!

Mysql2::エラー: 不正な文字列値: '\xC5\x8Dga, ...' 列 'description' の行 1: INSERT INTO sammiches( country, created_at, description, image, name) updated_atVALUES ('Japan', '2013-05-03 01 :17:06', '焼きそばを詰めたホットドッグ バンズ, 多くの場合、紅しょうがなどのピクルスとマヨネーズをトッピング', '/wiki/File:Yakisoba_sandwich_by_kaex0r.jpg', 'Yakisoba-pan', '2013- 05-03

4

3 に答える 3

17

これは、挿入しようとしている文字列に無効な UTF-8 バイト シーケンスが含まれている場合にも発生する可能性があります。たとえば、ルビでは、次を使用して無効な文字を削除できます

string_with_invalid_sequences.encode('utf-8', 'binary', invalid: :replace, undef: :replace, replace: '')

String#scrubは Ruby 2.1 以降で使用できます

string_with_invalid_sequences.scrub
于 2013-11-05T16:13:48.433 に答える
10

おそらく、テーブルが非 Utf8 CHARACTER SET に設定されています。これは、次の sql で変更できます。

ALTER TABLE `your_database_name`.`your_table` CONVERT TO CHARACTER SET utf8
于 2013-08-28T21:07:48.933 に答える
5

ここで答えを見つけることができます。重複を報告する方法がわかりません。 Mysql2::エラー: 文字列値が正しくありません Rails 3 UTF8

ご参考までに、私の回答を繰り返しさせてください


最近この問題に遭遇しました。基本的に、mysql のデフォルトの照合タイプは utf8_unicode_ci ではありません。

以下をせよ。必要に応じてデータをバックアップしてください。データベースを削除して再作成する必要がありました

rake db:drop
rake db:create

mysql データベースの照合順序を utf8_unicode_ci に変更します (ここでは phpMyAdmin が役立つ場合があります)。最後に、移行を復元します。

rake db:migrate

楽しみ。

于 2013-06-05T08:07:22.023 に答える