我正在尝试转换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();
row [2]值中的名称列有时可以包含以下字符:é或í
我想将mysqlx :: Value结果传递给std :: string对象或类似对象。 注意:当字符串不包含特殊字符时,此方法可以正常工作。
我尝试使用字符串流,但是当字符串包含特殊字符时出现“ CDK错误:字符串转换错误”。
std::stringstream name;
name << row[2]; // Exception throws here
编辑:ubuntu 18.04,gcc 7.3.0
答案 0 :(得分:0)
结果是我使用的是mysql-cpp-connector版本,该版本具有utf8mb4字符编码的已知错误。 (/将头发撕掉),升级后将其修复。