MySQL, Connector C / C ++ 8.0.13 - Нет поддержки UNICODE / UTF8? - PullRequest
0 голосов
/ 21 декабря 2018

Мне кажется, что по какой-то причине я "рискую" быть заблокированным от того, чтобы задавать вопросы, но я должен задать этот вопрос.

Используя 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?

Я был бы очень признателен, если бы кто-нибудь дал мне несколько ответов относительно того, почему и где.Более чем уверен, что многие люди ищут это, и нет окончательного ответа или решения, снова в 2019 году.

Большое спасибо

1 Ответ

0 голосов
/ 02 января 2019

Я нашел решение для этого, частично.Однако поддержка UNICODE не поддерживается, но вы можете извлекать и печатать строки UTF-8.

Это связано с другим моим вопросом ( Legacy MySQL Connector C ++ с использованием исключения sql :: ConnectOptionsMap ), поскольку по порядкучтобы вернуть строки UTF-8 из MySQL, вам нужно использовать следующее:

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.

Я очень надеюсь, что мои усилия помогут кому-то в ближайшем будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...