Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 编码字符0xe28093“;UTF8";在“中没有等效项”;拉丁语1“;_Postgresql_Grails_Encoding_Character Encoding - Fatal编程技术网

Postgresql 编码字符0xe28093“;UTF8";在“中没有等效项”;拉丁语1“;

Postgresql 编码字符0xe28093“;UTF8";在“中没有等效项”;拉丁语1“;,postgresql,grails,encoding,character-encoding,Postgresql,Grails,Encoding,Character Encoding,在Latin1 Postgres 9.1.3中插入一些数据时,我得到一个错误: 编码“UTF8”的字符0xe28093在“LATIN1”中没有等价物 Grails应用程序正在插入数据。我尝试了以下方法,但没有成功: hibernate{connection.characterEncoding='utf8'} jdbc conn字符串中的charSet=LATIN1 hibernate{connection.charSet='LATIN1'} 数据库是通过以下方式创建的: CREATE DAT

在Latin1 Postgres 9.1.3中插入一些数据时,我得到一个错误:

编码“UTF8”的字符0xe28093在“LATIN1”中没有等价物

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

  • hibernate{connection.characterEncoding='utf8'}
  • jdbc conn字符串中的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;

有什么想法吗?提前感谢您。

这是的UTF-8编码。拉丁字符集中最接近的等效字符是字符代码150(0x96)。

这是拉丁字符的UTF-8编码。拉丁1字符集中最接近的等效字符是字符代码150(0x96)。

如果我理解正确,您的数据库是用编码“拉丁1”创建的。创建数据库后,无法更改此编码。您唯一可以更改的是客户端和PostgreSQL服务器之间的编码,正如您的要点所示。然后,PostgreSQL服务器尝试在客户端编码和数据库编码之间进行转换

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


这意味着您必须清除所有进入数据库的数据。摆弄客户机编码是没有帮助的。

如果我理解正确,您的数据库是用编码“LATIN1”创建的。创建数据库后,无法更改此编码。您唯一可以更改的是客户端和PostgreSQL服务器之间的编码,正如您的要点所示。然后,PostgreSQL服务器尝试在客户端编码和数据库编码之间进行转换

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


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

谢谢您的链接。非常有用。谢谢你的链接。非常有用。谢谢A.H.。请看一下创建ddl。我想知道LC_-COLLATE或LC_-CTYPE对不同的值是否有帮助。LC_-COLLATE用于特定语言的排序,LC_-CTYPE用于“什么代码点是数字,什么字符,…”——所以对你没有帮助,因为编码是覆盖所有值的大伞。@paulosuzart:噢,在你摆弄LC_-COLLATE和LC_-CTYPE之前,一定要弄清楚其中的含义。有很多,也有一些微妙的。谢谢你A.H.。请看一下创建ddl。我想知道LC_-COLLATE或LC_-CTYPE对不同的值是否有帮助。LC_-COLLATE用于特定语言的排序,LC_-CTYPE用于“什么代码点是数字,什么字符,…”——所以对你没有帮助,因为编码是覆盖所有值的大伞。@paulosuzart:噢,在你摆弄LC_-COLLATE和LC_-CTYPE之前,一定要弄清楚其中的含义。有很多,也有一些微妙的。