1

Latin1 Postgres 9.1.3 にデータを挿入すると、次のエラーが表示されます。

character 0xe28093 of encoding "UTF8" has no equivalent in "LATIN1"

データは Grails アプリケーションによって挿入されています。私は成功せずに次のことを試しました:

  • hibernate { connection.characterEncoding='utf8'}
  • ?charSet=LATIN1jdbc conn文字列で
  • hibernate { connection.charSet='LATIN1'}

データベースは次を使用して作成されました。

CREATE DATABASE mydb
  WITH OWNER = postgres
       ENCODING = 'LATIN1'
       TABLESPACE = pg_default
       LC_COLLATE = 'C'
       LC_CTYPE = 'C'
       CONNECTION LIMIT = -1;

何か案が?前もって感謝します。

4

2 に答える 2

4

あなたのデータベースがエンコーディング "LATIN1" で作成されていることを正しく理解しています。このエンコーディングは、DB の作成後に変更することはできません。箇条書きで示されているように、変更できる唯一のことは、クライアントと PostgreSQLサーバー間のエンコーディングです。次に、PostgreSQL サーバーは、クライアントのエンコーディングとデータベースのエンコーディングの間で変換を試みます。

もちろん、クライアントが DB エンコーディングに変換できないデータを送信した場合、このプロセスは失敗します。あなたの場合、Unicode コードポイント 2013 は LATIN1 に変換できません。

これは、データベースに送られるすべてのデータを消去する必要があることを意味します。クライアントのエンコーディングをいじっても役に立ちません。

于 2012-04-09T21:35:54.740 に答える
3

これはダッシュ記号 enの UTF-8 エンコーディングです。latin1 文字セットで最も近いものは、文字コード 150 (0x96) です。

于 2012-04-09T21:24:45.037 に答える