3

特定の文字列がデータベースに保存されると、次の ActiveRecord エラーが発生します。

ActiveRecord::StatementInvalid: PG::Error: ERROR: invalid byte sequence for encoding "UTF8": 0xfc

この文字列で起こっていると思いますMühldorf

これを解決するために ruby​​ ファイルの先頭に追加しようとしまし# encoding: utf-8たが、何もしていないようです。

Ruby Geocoderを使用して位置データを取得していますが、そこから文字列が取得されます。

Heroku の Postgres データベースで Ruby 1.9.3 を実行しています。

4

1 に答える 1

18

小文字の U ウムラウトは、ISO 8859-1 (AKA Latin-1) では 0xfc ですが、0xfc は有効な UTF-8 文字ではありません。問題は、UTF-8 として処理しようとしている Latin-1 文字列があり、PostgreSQL が正しく不平を言っていることです。

UTF-8 を送信するようにデータ ソースを修正するか、常に Latin-1 を送信する場合は、次のように自分でエンコードを修正します。

utf_8_string = latin_1_string.force_encoding('iso8859-1').encode('utf-8')

次に、utf_8_stringバージョンを操作します。

于 2013-09-30T20:41:43.750 に答える