Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 25.03.2009, 20:50   #1
oleg kutkov
Unix C++ developer
Форумчанин
 
Аватар для oleg kutkov
 
Регистрация: 16.04.2007
Сообщений: 651
Вопрос Библиотека mysql++ и кириллица в результатах запроса.

Всем привет.
Пишу программу на С++ под Linux, работающую с mysql базой.
В качестве библиотеки выбрал Mysql++, все отлично, только возникла проблема с получением из базы записей, содержащих кириллические символы. Запрос делаю просто

Код:
#include <mysql++.h> //подключаем необходимый заголовочный файл

Connection conn; //экземпляр класса Connection
conn.connect(DB, server, user, password); //подключаемся к базе

//инициализируем строку запроса
string QueryString("SELECT name FROM clients WHERE login = 'V01'"); 
Query query = conn.query(QueryString); //выполняем запрос к базе
StoreQueryResult res = query.store(); //получаем результат
if(!res.empty()) //если результат не пустой 
 cout << res[0]["name"] << endl; //выводим значение
В результате получаю что то типо такого: ??? "???? ???????"
Пробовал как выводить на консоль, так и писать в файл, результат один. В базе строки хранятся в юникоде.
Может кто работал с этой библиотекой на данной платформе и сталкивался с такой же или похожей проблемой ?
Предпологаю, что существуют какой то параметр соединения, отвечающий за кодировку. В гугле и манах ничего подобного не нашел.
oleg kutkov вне форума
Старый 26.03.2009, 09:59   #2
wyvern
Форумчанин
 
Аватар для wyvern
 
Регистрация: 24.03.2009
Сообщений: 215
По умолчанию

Попробуй сразу после подключения выполнить запрос
set names 'utf8'
wyvern@localhost:~$ sudo emerge --unmerge world
wyvern вне форума
Старый 26.03.2009, 13:25   #3
oleg kutkov
Unix C++ developer
Форумчанин
 
Аватар для oleg kutkov
 
Регистрация: 16.04.2007
Сообщений: 651
По умолчанию

Спасибо большое! Проблема решена!
сразу после подключения выполняю код:

Код:
string QueryString("SET CHARSET UTF8");
Query query = conn.query(QueryString);
query.execute();
Все последующие запросы возвращают корректный результат.
oleg kutkov вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
кириллица в HLP andrey4623 Общие вопросы Delphi 2 12.06.2009 16:42
Сохранение базы MySQL в виде запроса... masterdela БД в Delphi 3 25.02.2009 07:01
Кириллица в бинарнике Min Помощь студентам 2 12.11.2008 15:47
Кириллица в регулярных выражениях alx PHP 27 01.03.2008 19:07
Определение автора(владельца) запроса в Mysql Квэнди БД в Delphi 1 15.10.2007 16:00