私はRails 3.0.9アプリケーションを私のdev envでローカルに実行し、herokuアプリケーションでリモートで実行しています。私にはa method that imports a CSV file into a modelがあります。このファイルには、°、á、é、íなどの英語以外の文字を含めることができます(スペイン語です)。Rails 3、Heroku:Tapsサーバーエラー:PGError:エラー:エンコード "UTF8"のバイトシーケンスが正しくありません:0xba
私は現時点でローカルdev(SQLite)データベースに問題なく完全なファイル(75kレコード)をインポートできます。 heroku db:push
、でHerokuのにデシベルをアップロードするときには、それは私がタイトルに投稿してるのエラーで失敗します。
!!! Caught Server Exception
HTTP CODE: 500
Taps Server Error: PGError: ERROR: invalid byte sequence for encoding "UTF8": 0xba
HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".
はどうやら、Herokuのは「°」の文字を挿入する問題があります。 (現時点ではファイルは、í、é、などの文字を任意のáはありませんが、私はこれらがあまりにも失敗する可能性があります疑いがある。)
は私が私のapplication.rb
ファイルのデフォルトのエンコーディングに設定されている、次のように:
#.../application.rb
config.encoding = "utf-8"
「クライアントのエンコード」を設定してこの問題を解決するには他に何ができますか?
詳細な説明ありがとうございます。私はPostreSQLの上で直接開発するというあなたの提案に従うつもりです。なぜなら、これは私がこの性質の問題に遭遇した初めてのことではないからです。 あなたが示唆しているIconvの使用法はあまり明確ではありません。インポートメソッドにどのように適用しますか?それとも、IconvでCSVファイルを何とか消さなければならないのですか? (あなたがUTF-8で直接テキストを取得できないと仮定して) – bruno077
@ bruno077:エンコードを修正するためにSQLiteデータベース全体を回転させることができます( 'fixed = Iconv.iconv(....、sqlite_string);' 'fixed'をデータベースに戻します)、エンコーディングがローカルにソートされたら、SQLiteからアップロードします。最終的にはすべてがUTF-8になり、それまでは苦しんでいます(しかし、状況は10年前と比べるとはるかに優れています)。 –
ご協力いただきありがとうございます。私はあなたの答えをマークします! – bruno077