使用丹麦字母时,Postgresql / npgsql无法写入

时间:2013-09-05 12:53:00

标签: c# postgresql unicode utf-8 npgsql

当我尝试写入postgresql DB时出现此错误。

  

NpgsqlException:错误:22021:编码的字节序列无效   “UTF8”:0xe5 0x27 0x2c

只有当我使用丹麦字母时才会发生这种情况(æøå)。

有没有办法将它设置为使用ex。 Unicode?

我在C#项目中使用Npgsql。

当我不使用丹麦字母时,我完全没有问题。

2 个答案:

答案 0 :(得分:1)

你的应用程序有问题。它正在发送latin-1编码的字符串,就像它们是utf-8一样。

错误中的字节序列是字符串的 latin-1

å',

每:

regress=> SELECT convert_from(BYTEA '\xe5272c', 'latin-1');
 convert_from 
--------------
 å',
(1 row)

您必须正确设置client_encoding以反映您正在发送的文本的编码,或者(最好)在使用nPgSQL时使用正确的C#unicode字符串。

答案 1 :(得分:0)

NpgsqlConnection conn = new NpgsqlConnection(
         "Server="+ConnectionInfo +";"+
         "Port=5432;" +
         "User Id=MyAdmin;" +
         "Password=Test;" +
         "Database=MyDB;"+
         "Encoding = Unicode"
         );

     conn.Open();