2

我有一个 PostgreSQL 数据库,它使用字符编码WIN1252

在查询数据库时,某些记录在尝试读取数据时会产生错误,因为它正在尝试将其转换为UTF8. 这发生在一些包含某些非拉丁字符的外国名称上。

错误是:

ERROR: 22P05: character with byte sequence 0x81 in encoding "WIN1252" has no equivalent in encoding "UTF8"

当我调用Read().NpgsqlDataReader

我的连接定义为:

new NpgsqlConnection("Server=127.0.0.1;Port=5432;Database=xyz;User Id=****;Password=****;");

如何使用 C# 读取这些数据?

4

1 回答 1

5

我已经设法解决了这个问题。无法设置连接字符串中的属性或 or 的任何NpgsqlConnection属性NpgsqlCommand

但是,我能够client_encoding在查询中设置 的值。因此,在打开连接后,我首先执行了(非)查询:

set client_encoding = 'WIN1252'

之后,同一连接上的任何后续命令都使用正确的编码并返回结果而没有抱怨。

于 2013-05-03T08:13:58.430 回答