MySQL Connector C / C ++ 8.0.13-不支持UNICODE / UTF8吗?

时间:2018-12-21 13:46:14

标签: c++ mysql unicode

由于某种原因,我似乎有被阻止提问的“风险”,但这是我必须提出的问题。

使用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) {}

所以这个问题实际上扩展到更多:

  • 为什么不支持unicode?
  • 已经支持它了吗,我只是盲目的吗?
  • 要如何获得unicode支持?

如果有人能就原因和地点给我一些答案,我将不胜感激。可以肯定的是,有很多人正在寻找这个答案,并且在2019年也没有最终的答案或解决方案。

非常感谢

1 个答案:

答案 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时需要指定这些选项。

我真的希望我的努力会在不久的将来对某人有所帮助。