Russian Qt Forum
Ноябрь 24, 2024, 10:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с русской кодировкой(SOLVED)  (Прочитано 4445 раз)
paran87
Гость
« : Май 02, 2010, 01:34 »

На ноуте установлена Ubuntu 9.10, QtCreator,MySQL(Создана база db,таблица name(тип MyIsam, сравнение c utf8_bin), два поля(id-простой счетчик, nam-поле типа varchar(100). В таблице одна запись = Иван.)
  QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("db");
    db.setUserName("root");
    db.setPassword("1qaz");

    QSqlQuery query;
    query.exec("select * from name");
    QString salida;

    while(query.next()){
    salida+=query.value(1).toString().toUtf8();//+"\n";
    }

   ui->textEdit->setText(salida);
Получаю  ÃÂ˜ÃÂ²ÃÂ°ÃÂ½
Без Utf8
salida+=query.value(1).toString();
Получаю  Ð˜Ð²Ð°Ð½
Если пишу Ivan то получаю Ivan(т.е все работает норм)
Помогите получить русские буквы
« Последнее редактирование: Май 03, 2010, 23:37 от paran87 » Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #1 : Май 02, 2010, 08:19 »

Все дело в кодировке MYSQL.
Установи default-character-set=utf8" в  /etc/mysql/my.cnf

Есть запрос: SET NAMES 'charset_name'
Записан
garryHotDog
Гость
« Ответ #2 : Май 02, 2010, 12:08 »

может поможет это
Код
C++ (Qt)
 
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
 
Записан
paran87
Гость
« Ответ #3 : Май 03, 2010, 23:35 »

Установи default-character-set=utf8" в  /etc/mysql/my.cnf
Это не помогло. Все равно получаю ерунду

garryHotDog. Ты немножко не прав. У меня Linux. Я же писал что сижу на убунту, а ты мне предлогаешь кодировку для винды.
Я везде выставлял кодировку UTF-8 значит вот этот вариант не совсем подходит.
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
Я его заменил на
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
И все заработало. Большое спасибо.
Записан
garryHotDog
Гость
« Ответ #4 : Май 04, 2010, 10:32 »

я в проектах для Ubuntu всегда ставил windows-1251 Смеющийся
Записан
paran87
Гость
« Ответ #5 : Май 05, 2010, 11:55 »

я в проектах для Ubuntu всегда ставил windows-1251 Смеющийся
Нее Я решил что лучше родное для Linux'a поставлю
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.098 секунд. Запросов: 23.