编码=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=ASCII
或 Encoding=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美国和其他地区)。
我使用 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=ASCII
或 Encoding=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美国和其他地区)。