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
即使输入为拉丁1,PostgreSQL能否将条目转换为UTF-8?_Postgresql_Encoding_Utf 8_Iso 8859 1 - Fatal编程技术网

即使输入为拉丁1,PostgreSQL能否将条目转换为UTF-8?

即使输入为拉丁1,PostgreSQL能否将条目转换为UTF-8?,postgresql,encoding,utf-8,iso-8859-1,Postgresql,Encoding,Utf 8,Iso 8859 1,我有psql(PostgreSQL)10.10,客户端编码是UTF8。现在,条目由旧的Delphi版本生成,该版本不能使用UTF8,因此DB中的条目具有特殊符号,而不是UTF8。A.™ 例如,符号由\u0099表示。当符号输入数据库时,是否可以强制转换?切换Delphi现在不是一个选项。如果这是一个基本问题,我很抱歉。我对数据库的了解有限。看起来您的Delphi客户端使用的不是LATIN1,而是WINDOWS-1252,因为™ 是该编码中的代码点99 您可以更改每个会话的client\u编码,这

我有psql(PostgreSQL)10.10,客户端编码是UTF8。现在,条目由旧的Delphi版本生成,该版本不能使用UTF8,因此DB中的条目具有特殊符号,而不是UTF8。A.™ 例如,符号由\u0099表示。当符号输入数据库时,是否可以强制转换?切换Delphi现在不是一个选项。如果这是一个基本问题,我很抱歉。我对数据库的了解有限。

看起来您的Delphi客户端使用的不是LATIN1,而是WINDOWS-1252,因为™ 是该编码中的代码点99

您可以更改每个会话的
client\u编码
,这是您应该做的

要么让您的应用程序执行

SET client_encoding = WIN1252;

或者设置
PGCLIENTENCODING
环境变量,或者指定
client\u encoding
作为连接字符串的一部分。

这有帮助吗?这是拉丁语吗?UTF8和Latin1对0-127之间的字符使用相同的字节值。这涵盖了所有不能使用UTF8的非重音英文字母
,它可以而且可能已经使用了。Delphi已经在2004年支持Unicode了(当我上次使用它时)。如果应用程序使用US-ASCII范围(0-127)中的字符,它已经可以使用“UTF8”,因为实际字节是相同的。这不是切换Delphi的问题。这是一个有缺陷的应用程序,不应该使用ASCII。预计到2000年,Windows应用程序将采用Unicode。这项申请在20年前就应该被拒绝。真正的解决办法是将所有字符串类型切换为Unicode类型并重新编译。@PanagiotisKanavos它是2000年的Delphi6,所以你是对的。我理解得对吗?所以在创建数据库时将其设置为UTF8是错误的?如果我把LATIN1数据集推到它上面,并且它被设置为LATIN1,那么当我提取数据时,它将是UTF8?@Namal:将数据库设置为UTF-8完全可以。您只需确保您的客户端在向服务器发送数据或从服务器接收数据时使用正确的编码。在Delphi中,我的连接有“codepage=latin1”属性设置,它不应该这样做吗?@Namal不,您也必须告诉PostgreSQL,因此,它知道应用程序将为其提供拉丁文字符,并可以将其正确转换为UTF-8™ 不能用拉丁文1表示。因此,请尝试使用
WIN1252
,就像我更新的答案所建议的那样。