C ++: дескриптор sql -строка в UTF32 - PullRequest
0 голосов
/ 08 февраля 2020

Я пишу программу, которая читает кодированную строку UTF32 из базы данных MySQL и должна записать ее в файл / cout. Проблема в том, что, пока я просто использую буквы и так далее, это работает, но как только я беру смайлик, он просто пишет «?». Я попытался: 1. Изменить локаль (с std::setlocale(LC_ALL, "en_EN.UTF-32");) 2. Использовать wstrings, но выдает ошибку вроде этого: Не могу преобразовать sql :: String в wstring ...

Любые предложения как это сделать?

Я использую следующий (сокращенный) код:

int main(int argc, char **argv){
        sql::Driver *driver;
        sql::Connection *con;
        sql::Statement *stmt;
        sql::ResultSet *res;         
        driver = get_driver_instance();
        con = driver->connect(IP, USER, Password);
        con->setSchema(DBNAME);
        stmt = con->createStatement();
        res= stmt->executeQuery("Select * from messages");         
        std::string tmp;
        while (res->next()) {
              tmp = res->getString(7);
              std::cout << tmp;
        }
}

Поле MySQL создается с помощью следующей (сокращенной) команды:

std::string msgs = "CREATE TABLE if not Exists `"+dbnam+e"`.`messages` (
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE,
    `message` LONGTEXT CHARACTER SET utf32 COLLATE utf32_bin NOT NULL ,
    UNIQUE (`id`)) ENGINE = InnoDB;;
stmt->execute(msgs);"

Спасибо За вашу помощь заранее.

...