1

当我尝试写入我的 postgresql 数据库时出现此错误。

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

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

有没有办法将它设置为使用 ex. 统一码?

我在 C# 项目中使用 Npgsql。

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

4

3 回答 3

1

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

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

å',

每:

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

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

于 2013-09-05T13:02:07.233 回答
1

当我从 word 文档或记事本复制并粘贴到我的 C# 应用程序文本框字段时,我遇到了同样的问题。简单的解决方案是将“Encoding = Unicode”添加到您的 c# 应用程序的 postgresql 连接字符串中。这有多么简单。经过三天的谷歌搜索后,我松了一口气。

于 2013-12-16T15:31:38.740 回答
0
NpgsqlConnection conn = new NpgsqlConnection(
         "Server="+ConnectionInfo +";"+
         "Port=5432;" +
         "User Id=MyAdmin;" +
         "Password=Test;" +
         "Database=MyDB;"+
         "Encoding = Unicode"
         );

     conn.Open();
于 2015-03-27T06:01:07.290 回答