Npgsql:读取字符串似乎不考虑代码页

本文关键字:不考虑 代码 读取 字符串 Npgsql | 更新日期: 2023-09-27 18:04:21

首先,我是一个完全的SQL新手,而且对不同的代码页也没有什么经验,所以答案可能很简单,这也解释了为什么这里似乎没有人问过这个问题。

我有一个PostgreSQL数据库(v 8.4.22,协议v3)和一个Unity3D应用程序与npgsql 2.0。现在,我连接到我的数据库,使用ExecuteReader()执行NpgsqlCommand,获得NpgsqlDataReader。现在,如果我用GetString(int)读取,我会得到一个编码错误的字符串,我的特殊字符完全乱了,例如我得到一个'ö'而不是'ö'。我已经在调试器中看到了这一点,所以输出没有问题,返回的字符串已经混乱了,所以我真的不知道我的选择是什么。数据库使用UTF-8。列的数据类型为"text"

顺便说一句,我连接没有指定代码页,因为我读到这是过时的连接字符串,因为一些PSQL版本。无论如何,我试过了,没有任何效果。

任何想法?谢谢。

Npgsql:读取字符串似乎不考虑代码页

我不认为"codepages"在这里是相关的,问题似乎是:

  • PostgreSQL数据库包含unicode,编码为UTF-8,而…
  • npgsql将数据解释为ascii。

根据此stackoverflow问题,解决方法是在连接字符串中显式指定Encoding=UNICODE