C# 为 PostgreSQL 数据库中的数据获取正确的编码



我有 Postgresql 数据库,其中 UTF8 编码和排序规则设置为 Windows1250。

它由用Delphi编写的应用程序使用,并使用具有可选参数的ODBC驱动程序访问:设置 client_encoding=拉丁语2。

在该应用程序中,数据库中的所有字符串都正确显示。 现在我想使用 c# 应用程序获取数据库数据,但我无法正确编码。

我尝试使用不同的client_encodings和编码类来正确使用它,但没有成功。

例如,字符"š"是不能很好地显示的字符之一。

  • 使用默认编码 (utf8( 我得到 \u009a
  • 设置client_encoding = 拉丁语2我得到? 字符
  • 设置client_encoding = windows1250我收到错误:"编码"UTF8"中带有字节序列0xc2 0x9a的字符在编码WIN1250中没有等效项"。

有什么建议可以解决这个问题吗?提前谢谢你。

溶液:我终于通过使用以下方法得到了一个正确的字符串:

Encoding.Default.GetString(Encoding.GetEncoding("Latin2").GetBytes(stringFromDB));

我终于通过使用以下命令得到了一个正确的字符串:

Encoding.Default.GetString(Encoding.GetEncoding("Latin2").GetBytes(stringFromDB));

最新更新