我从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”之后打印出来。
有什么想法吗?
答案 0 :(得分:0)
实际上没有问题。我将返回的数据写入文件,并且所有UTF-8字符均正确。调试器和CMD无法按预期显示UTF-8数据...