编码=ASCII;和编码= UNICODE;不要在 Npgsql 3 连接字符串中工作

Encoding=ASCII; and Encoding=UNICODE; do not work in an Npgsql 3 connection string

我使用 Big SQL 安装程序新安装了 PostgreSQL (9.6.1),使用 .msi 安装程序安装了 Npgsql (3.2.0),但是非 ASCII 字符支持似乎已损坏。

我的连接字符串是:

<add name="Northwind" connectionString="Database=Northwind;Server=localhost;Port=5432;User Id=postgres;Password=123;Encoding=ASCII;" providerName="Npgsql"/>

我在读回非 ASCII 字符数据时收到这样的异常消息:

System.Text.DecoderFallbackException : Unable to translate bytes [C3] at index 22 from specified code page to Unicode.

我试过使用 Encoding=UNICODE;,但都不起作用。

您可能有一个旧的 Npgsql 连接字符串。当使用当前 (3.2.0) Npgsql 访问当前 (9.6.1) PostgreSQL 时,Encoding=ASCIIEncoding=UNICODE 将不再有效。

解决方案:完全删除 Encoding=xxx 一切正常!

您不需要 'fix' 您的 Postgres 编码和语言环境,您不需要尝试找到工作 Encoding 值以在连接字符串中使用; Ngpsql 3 仅在没有 Encoding 设置的情况下工作,针对 Windows (Encoding=UTF8 | Collate=English_United Kingdom.1252 | Ctype=English_United Kingdom.1252) 上的默认 Postgres 安装设置(对于英国,但我相信同样的事情适用于 English_United States.1252 for美国和其他地区)。

(参见:https://github.com/npgsql/npgsql/issues/1396