2017-02-08 13 views
0

我使用Big SQL安装程序安装了PostgreSQL(9.6.1),并安装了使用.msi安装程序的Npgsql(3.2.0)的新安装,但安装了非ASCII角色支持似乎被打破。编码= ASCII;和Encoding = UNICODE;在Npgsql 3连接字符串中不起作用

我的连接字符串是:

<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;,而不是尝试过,但没有作品。

回答

2

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

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

您不需要'修复'您的Postgres编码和区域设置,您不需要尝试查找连接字符串中使用的工作Encoding值; Ngpsql 3只能在没有Encoding设置的情况下运行,与Windows上的默认Postgres安装设置(Encoding=UTF8 | Collate=English_United Kingdom.1252 | Ctype=English_United Kingdom.1252)(适用于英国,但我认为English_United States.1252适用于美国和其他地区)相同。

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

相关问题