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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: кодировки. почему работает?  (Прочитано 2146 раз)
george
Гость
« : Май 09, 2011, 16:58 »

Есть база MySQL, повсюду стоят кодировки utf-8.
Код пишу в Qt Creator на Win7,
- в креаторе кодировка файлов по умолчанию windows-1251.
- в коде
Код:
    QTextCodec *codec = QTextCodec::codecForName("Windows-1251");
    QTextCodec::setCodecForCStrings(codec);

Запрос выполняется нормально, можно просмотреть результат
Код:
query.exec("SELECT Преподаватель FROM Schedule;");
while(query.next()) { //результат
                    QString t = query.value(0).toString();
                    qDebug()<<t<<'\n';            };

Каким образом база понимает запрос, если кодировка в базе utf-8, а запросы к ней выполняются из кода в windows-1251?


« Последнее редактирование: Май 09, 2011, 17:01 от george » Записан
blood_shadow
Гость
« Ответ #1 : Май 09, 2011, 21:46 »

Каким образом база понимает запрос, если кодировка в базе utf-8, а запросы к ней выполняются из кода в windows-1251?
строка
Код:
QTextCodec::setCodecForCStrings(codec);
говорит что при конвертации с обычных строк в QString(в котором используется utf-16 насколько мне не
изменяет память) будет использоваться метод перекодирования с "Windows-1251" в utf-16, то есть
ты явно указал что текст у тебя в "Windows-1251" и поэтому перекодировка будет правильной,
query.exec принимает QString, то есть тут присутствует неявная конвертация с 1251 в юникод
это все есть в ассистанте в описании класса QString
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #2 : Май 10, 2011, 00:34 »

Поле таблицы на русском? Круть, пока такого не встречал...
Записан

kubuntu/Win7/x64/NetBeans
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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