在Latin1 Postgres 9.1.3中插入一些数据时,我收到错误:
character 0xe28093 of encoding "UTF8" has no equivalent in "LATIN1"
Grails应用程序正在插入数据。我尝试过以下但没有成功:
hibernate { connection.characterEncoding='utf8'}
?charSet=LATIN1
hibernate { connection.charSet='LATIN1'}
数据库是用:
创建的CREATE DATABASE mydb
WITH OWNER = postgres
ENCODING = 'LATIN1'
TABLESPACE = pg_default
LC_COLLATE = 'C'
LC_CTYPE = 'C'
CONNECTION LIMIT = -1;
有什么想法吗?提前谢谢。
答案 0 :(得分:4)
如果我理解正确,您的数据库是使用编码“LATIN1”创建的。创建DB后,无法更改此编码。您可以更改的唯一内容 - 如您的要点所示 - 是您的客户端与PostgreSQL 服务器之间的编码。 PostgreSQL服务器然后尝试在客户端编码和数据库编码之间进行转换。
如果客户端发送无法转换为DB编码的数据,则此过程当然会失败。在您的情况下,Unicode codepoint 2013无法转换为LATIN1。
这意味着您必须清除所有进入数据库的数据。摆弄客户端编码无济于事。
答案 1 :(得分:3)
这是en dash symbol的UTF-8编码。 latin1字符集中最接近的等价物是字符代码150(0x96)。