1

在 Latin1 Postgres 9.1.3 中插入​​一些数据时,出现错误:

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

Grails 应用程序正在插入数据。我尝试了以下但没有成功

  • hibernate { connection.characterEncoding='utf8'}
  • ?charSet=LATIN1在 jdbc 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”创建的。创建数据库后无法更改此编码。唯一可以更改的——如项目符号所示——是客户端和 PostgreSQL服务器之间的编码。然后 PostgreSQL 服务器尝试在客户端编码和数据库编码之间进行转换。

如果客户端传输无法转换为 DB 编码的数据时,此过程当然会失败。在您的情况下,Unicode 代码点 2013 无法翻译成 LATIN1。

这意味着您必须清理进入数据库的所有数据。摆弄客户端编码将无济于事。

于 2012-04-09T21:35:54.740 回答
3

那是短划线符号的 UTF-8 编码。latin1 字符集中最接近的等价物是字符代码 150 (0x96)。

于 2012-04-09T21:24:45.037 回答