Russian Qt Forum

Qt => Базы данных => Тема начата: paran87 от Май 02, 2010, 01:34



Название: Проблема с русской кодировкой(SOLVED)
Отправлено: 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(т.е все работает норм)
Помогите получить русские буквы


Название: Re: Проблема с русской кодировкой
Отправлено: Mikhail от Май 02, 2010, 08:19
Все дело в кодировке MYSQL.
Установи default-character-set=utf8" в  /etc/mysql/my.cnf

Есть запрос: SET NAMES 'charset_name'


Название: Re: Проблема с русской кодировкой
Отправлено: garryHotDog от Май 02, 2010, 12:08
может поможет это
Код
C++ (Qt)
 
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
 


Название: Re: Проблема с русской кодировкой
Отправлено: paran87 от Май 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"));
И все заработало. Большое спасибо.


Название: Re: Проблема с русской кодировкой(SOLVED)
Отправлено: garryHotDog от Май 04, 2010, 10:32
я в проектах для Ubuntu всегда ставил windows-1251 ;D


Название: Re: Проблема с русской кодировкой(SOLVED)
Отправлено: paran87 от Май 05, 2010, 11:55
я в проектах для Ubuntu всегда ставил windows-1251 ;D
Нее Я решил что лучше родное для Linux'a поставлю