我似乎有被禁止提问的“风险”,但这是我必须提出的问题。
使用 MySQL 连接器 C++,制作我自己的小包装器以适应我的项目,一切正常。
但是我不能使用 UNICODE。几乎没有对此的支持,而我们现在是 2019 年。
结果集.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) {}
所以这个问题实际上扩展到更多:
- 为什么不支持 unicode?li>
- 是否已经有支持,我只是瞎了眼吗?
- 如何获得 unicode 支持?
如果有人能给我一些关于原因和地点的答案,我将不胜感激。可以肯定的是,很多人都在寻找这个,但在 2019 年仍然没有确凿的答案或解决方案。
非常感谢
最佳答案
我找到了部分解决方案。然而,不支持 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 Connector (mysqlcppconn-static.lib)。
注意:
这样做是行不通的,所以不要浪费你的时间:
Connection->setClientOption("OPT_CHARSET_NAME", "utf8");
Connection->setClientOption("OPT_SET_CHARSET_NAME", "utf8");
连接MySQL时需要指定这些选项。
我真的希望我的努力能在不久的将来帮助到别人。
关于c++ - MySQL Connector C/C++ 8.0.13 - 不支持 UNICODE/UTF8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53885856/