Я пишу программу, которая читает кодированную строку 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);"
Спасибо За вашу помощь заранее.