Преобразование mysqlx :: Value в std :: string со специальными символами - PullRequest
1 голос
/ 07 марта 2019

Я пытаюсь преобразовать тип mysqlx :: Value, который должен быть строкой, но в нем есть специальные символы нестандартного языка. Мне нужно обработать это как std :: string или эквивалент.

Я использую MySQL C ++ Connector XDevAPI для получения данных.

mysqlx::Session sess(_db_conn_info.db_host, _db_conn_info.db_port, _db_conn_info.db_user, _db_conn_info.db_pass);
    mysqlx::Schema db = sess.getSchema(_db_conn_info.db_name);

    mysqlx::Table artist_table = db.getTable("Artist");
    mysqlx::RowResult artist_result = artist_table.select("id", "a_id", "name", "is_australian")
        .where("id like :artist_id").bind("artist_id", artist_id).execute(); 

mysqlx::Row row = artist_result.fetchOne();

Столбец имени в значении строки [2] может иногда содержать такие символы, как: é или í

Я хочу передать результат mysqlx :: Value в объект std :: string или аналогичный. Примечание: это прекрасно работает, когда строка не содержит специальных символов.

Я пытался использовать поток строк, но я получаю сообщение «Ошибка CDK: ошибка преобразования строки», когда строка содержит специальные символы.

std::stringstream name;
name << row[2]; // Exception throws here

РЕДАКТИРОВАТЬ: Ubuntu 18.04, GCC 7.3.0

1 Ответ

0 голосов
/ 12 марта 2019

Оказывается, я использовал версию mysql-cpp-connector, в которой была известная ошибка с кодировкой символов utf8mb4. (/ вырывает волосы), исправляя это исправлено.

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