2010-12-12 37 views

答えて

2

データを保存するカラムのタイプは何ですか?添付ファイルがどのタイプでもよい場合は、データが単にBLOB(バイナリの "ラージ"オブジェクト)として確実に渡されるように、byteaカラムが必要です。他の答えで述べたように、そのエラーは、UTF-8エンコーディングのテキストとしてタグ付けされたPostgreSQLに送信されたデータの一部が無効であることを示します。

メールの添付ファイルをMIMEコンテンツタイプのヘッダーとともにバイナリとして保存することをお勧めします。 Content-Typeヘッダーには、バイナリコンテンツを添付ファイルのテキストに変換するために必要な文字エンコーディングが含まれている必要があります。 "text/plain; charset = iso-8859-1"となります。

デコードされたテキストをデータベースで使用できるようにするには、アプリケーションでデコードされたテキストをデコードして保存します。これは、PostgreSQLの全文索引を電子メール添付ファイルに使用する場合などに便利です。ただし、後で取得するためにデータベースに格納するだけの場合は、バイナリとして保存し、アプリケーションにテキストエンコーディングを心配しないでください。

0

0xa0は改行なしのスペースで、おそらくlatin1エンコーディングです。 Pythonでは、str.decode()とstr.encode()を使って現在のエンコーディングからターゲットエンコーディング(ここでは 'utf8')に変更します。しかし、私はあなたがRailsでどうやってそれをどうやって行くのか分かりません。

0

私はRailsのことは知らないが、PGは、このエラーメッセージを与えるとき、それはつまり:

はpostgresとあなたのRailsのクライアント間の接続が正しく、すべてのことを意味し、UTF-8エンコーディングを使用するように設定されて
  • クライアントとpostgresの間で起こったテキストデータはUTF-8

  • にencoedしなければならないし、あなたのRailsのクライアントが誤って(おそらくラテン-1またはISO-8859)、別のエンコーディングでエンコードされたいくつかのデータを送信される。したがって、postgresにそれ

  • 拒否します

データがデータベースに挿入されるクライアントコードを調べる必要があります。おそらく、ユニコード以外の文字列を挿入しようとするか、不適切なトランスコードが行われている可能性があります。

関連する問題