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

标签 c++ mysql unicode

我似乎有被禁止提问的“风险”,但这是我必须提出的问题。

使用 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?
  • 是否已经有支持,我只是瞎了眼吗?
  • 如何获得 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/

相关文章:

c++ - "new"构造链表节点时如何删除链表?

c++ - Google Native Client Visual Studio 插件 : Webserver fails to start because arguments to httpd. py 无效

MySql为什么在like中选择10.1.1.2

php - 调用 mysql 方法

php - UTF8工作流程PHP、MySQL总结

Haskell Char 和 unicode 代理

windows - Win32 CreateProcess : When is CREATE_UNICODE_ENVIRONMENT *really* needed?

c++ - C++20 的分支需要二进制补码

c++ - 枚举错误 : 'enum' : missing tag name

mysql - [警告]:PDO::__construct():MySQL 服务器已经消失 - wait_timeout 不是原因?