繁体   English   中英

在 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';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM