在 Postgresql ODBC 连接中使用 UTF8

Using UTF8 in Postgresql ODBC connection

我正在尝试将一些 UTF-8 字符串插入到 PostgreSQL 数据库中。我正在使用 Visual C++ 和 MFC(这一点可能不重要)和一个项目设置“使用多字节字符集”(试图在旧的遗留应用程序中切换数据库)。因此,当我执行一些 INSERT 命令时,我希望在数据库中看到这段文本(在 DBeaver 中):“ÐБВГ”。我通过将字符串“\xC0\xC1\xC2\xC3”从代码页 1251 转换为 CP_UTF8.

来插入此文本

当我将系统设置“非 Unicode 程序的语言”从英语更改为一些西里尔字母(如俄语)时,实际插入的文本不再是“ÐÐ'Ð'Г”,而是“РђР' Р'Р“”。 Postgres ODBC 驱动程序显然使用 CP_ACP 来解释我的多字节字符串。事实上,如果我现在尝试直接插入“\xC0\xC1\xC2\xC3”(不转换为 UTF-8),我会在数据库中看到“АБВГ”。但我需要插入 UTF-8 字符串,而不是代码页的子集。

如何指示 Postgres ODBC 驱动程序将我的字符串解释为 UTF-8,并忽略“非 Unicode 程序的语言”系统设置?

在 PSQL 控制台中,server_encodingclient_encoding 都设置为 UTF8

更改您的 ODBC DSN 连接字符串以包含以下内容:ConnSettings=SET CLIENT_ENCODING TO 'UTF8';