Postgresql/npgsql在使用丹麦字母时无法书写

本文关键字:书写 丹麦 npgsql Postgresql | 更新日期: 2023-09-27 18:30:13

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

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

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

有没有办法将其设置为使用ex.Unicode?

我在一个C#项目中使用了Npgsql。

当我不使用丹麦字母时,我一点问题都没有。

Postgresql/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();