C ++ MySQL连接器No utf8

时间:2018-10-13 18:01:00

标签: c++ mysql

我从MySQL数据库获取UTF-8字符串时遇到问题。我使用C ++连接器1.1,并使用以下代码连接:

sql::ConnectOptionsMap connection_properties;
connection_properties["hostName"] = server;
connection_properties["userName"] = user;
connection_properties["password"] = password;
connection_properties["schema"] = database;
connection_properties["port"] = 3306;
connection_properties["OPT_CHARSET_NAME"] = "utf8";
connection_properties["characterSetResults"] = "utf8";
connection_properties["preInit"] = "SET NAMES utf8";

driver = get_driver_instance();
con = driver->connect(connection_properties);
con->setSchema(database);

您已经看到了我已经尝试过的其他utf8选项。...

如果一条语句应该返回数据库字符串,例如“アフガニスタン”,那么在使用Visual Studio调试器时,我只会看到类似“ã”,“,”,“ char”和“ char”的字符。观察到的代码:

std::string name = res->getString(2);

Json编码后,它将在命令行中打印“ÒéóÒâòÒéÒé¼ÒâïÒé╣Òé┐Òâ│”。

其他具有正常拉丁字符的utf8列将按预期返回。它只会影响非拉丁字符的翻译列。

在同一PC上具有相同逻辑(数据库连接和json编码)的来自PHP的相同数据库调用将在字符“ \ u30a2 \ u30d5 \ u30ac \ u30cb \ u30b9 \ u30bf \ u30f3”之后打印出来。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

实际上没有问题。我将返回的数据写入文件,并且所有UTF-8字符均正确。调试器和CMD无法按预期显示UTF-8数据...