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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с кодировкой и Postgresql  (Прочитано 2917 раз)
qtkoder777
Частый гость
***
Offline Offline

Сообщений: 245


Просмотр профиля
« : Май 06, 2014, 14:27 »

Здравствуйте. Необходимо выводить на консоль Windows данные из базы Postgresql.
Код
SQL
SHOW client_encoding
выводит UNICODE
В main прописано
Код
C++ (Qt)
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("IBM 866"));
 

Русский текст, прописанный непосредственно в исходниках выводится как надо, а считанный из базы иероглифами.
Вывожу вот так
Код
C++ (Qt)
printf("%s\n",QObject::tr(str).toAscii().data());
Что надо сделать со строкой, чтобы она правильно вывелась?
Записан
Bepec
Гость
« Ответ #1 : Май 06, 2014, 15:16 »

QTextCodec
Записан
qtkoder777
Частый гость
***
Offline Offline

Сообщений: 245


Просмотр профиля
« Ответ #2 : Май 06, 2014, 15:47 »

QTextCodec
Понимаю, что QTextCodec, а с какими параметрами?
Код
C++ (Qt)
QString str1=QTextCodec::codecForName("UTF-8")->toUnicode(str);
QString str2=QTextCodec::codecForName("KOI8-R")->fromUnicode(str);
Пробовал по-разному и никак не работает.
Записан
Bepec
Гость
« Ответ #3 : Май 06, 2014, 17:11 »

из ассистента.
Код:
QString string = "...";
QTextCodec *codec = QTextCodec::codecForName("KOI8-R");
QByteArray encodedString = codec->fromUnicode(string);

В вашем случае приходит юникод. Т.е. должно быть примерно так
Код:
QString string = "...";
QTextCodec *codec = QTextCodec::codecForName("windows-1251");
QByteArray encodedString = codec->fromUnicode(string);

За точность не ручаюсь Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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