Postgresql/npgsql在使用丹麦字母时无法书写
本文关键字:书写 丹麦 npgsql Postgresql | 更新日期: 2023-09-27 18:30:13
当我尝试写入postgresql数据库时,会出现此错误。
NpgsqlException:错误:22021:用于编码的字节序列无效"UTF8":0xe5 0x27 0x2c
只有当我使用丹麦语字母(æøå)时才会发生这种情况。
有没有办法将其设置为使用ex.Unicode?
我在一个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();