当我尝试写入我的 postgresql 数据库时出现此错误。
NpgsqlException:错误:22021:用于编码“UTF8”的无效字节序列:0xe5 0x27 0x2c
只有当我使用丹麦字母 (æ ø å) 时才会发生这种情况。
有没有办法将它设置为使用 ex. 统一码?
我在 C# 项目中使用 Npgsql。
当我不使用丹麦字母时,我完全没有问题。
当我尝试写入我的 postgresql 数据库时出现此错误。
NpgsqlException:错误:22021:用于编码“UTF8”的无效字节序列:0xe5 0x27 0x2c
只有当我使用丹麦字母 (æ ø å) 时才会发生这种情况。
有没有办法将它设置为使用 ex. 统一码?
我在 C# 项目中使用 Npgsql。
当我不使用丹麦字母时,我完全没有问题。
你的应用程序有问题。它发送 latin-1 编码的字符串,就好像它们是 utf-8 一样。
错误中的字节序列是字符串的latin-1 :
å',
每:
regress=> SELECT convert_from(BYTEA '\xe5272c', 'latin-1');
convert_from
--------------
å',
(1 row)
您必须client_encoding
正确设置以反映您发送的文本的编码,或者(最好)在使用 nPgSQL 时使用正确的 C# unicode 字符串。
当我从 word 文档或记事本复制并粘贴到我的 C# 应用程序文本框字段时,我遇到了同样的问题。简单的解决方案是将“Encoding = Unicode”添加到您的 c# 应用程序的 postgresql 连接字符串中。这有多么简单。经过三天的谷歌搜索后,我松了一口气。
NpgsqlConnection conn = new NpgsqlConnection(
"Server="+ConnectionInfo +";"+
"Port=5432;" +
"User Id=MyAdmin;" +
"Password=Test;" +
"Database=MyDB;"+
"Encoding = Unicode"
);
conn.Open();