由于某种原因,我似乎有被阻止提问的“风险”,但这是我必须提出的问题。
使用MySQL连接器C ++,制作了自己的小包装来容纳我的项目,一切正常。
但是我不能使用UNICODE。对此几乎没有任何支持,我们已经在2019年。
resultset.h
virtual SQLString getString(uint32_t columnIndex) const = 0;
virtual SQLString getString(const sql::SQLString& columnLabel) const = 0;
sqlstring.h
SQLString(const SQLString & other) : realStr(other.realStr) {}
SQLString(const std::string & other) : realStr(other) {}
SQLString(const char other[]) : realStr(other) {}
SQLString(const char * s, size_t n) : realStr(s, n) {}
所以这个问题实际上扩展到更多:
如果有人能就原因和地点给我一些答案,我将不胜感激。可以肯定的是,有很多人正在寻找这个答案,并且在2019年也没有最终的答案或解决方案。
非常感谢
答案 0 :(得分:0)
我找到了部分解决方案。但是,不支持UNICODE,但是您可以检索和打印UTF-8字符串。
这与我的其他问题(Legacy MySQL Connector C++ using sql::ConnectOptionsMap exception)有关,因为要从MySQL取回UTF-8字符串,您需要使用以下内容:
sql::ConnectOptionsMap connection_properties;
connection_properties["OPT_CHARSET_NAME"] = "utf8";
connection_properties["OPT_SET_CHARSET_NAME"] = "utf8";
要使用这些选项,您需要从其网站使用MySQL连接器的静态版本(mysqlcppconn-static.lib)。
注意:
这样做是行不通的,所以不要浪费时间:
Connection->setClientOption("OPT_CHARSET_NAME", "utf8");
Connection->setClientOption("OPT_SET_CHARSET_NAME", "utf8");
连接到MySQL时需要指定这些选项。
我真的希望我的努力会在不久的将来对某人有所帮助。