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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: dos-кодировка  (Прочитано 7161 раз)
helga1917
Гость
« : Ноябрь 06, 2013, 09:34 »

Здравствуйте! есть бин-файл, в котором закодирован русский текст dos-866-кодировкой. Его нужно вывести на форму GUI- приложения.
Пробовала через QObject::tr, не получается.

Код
C++ (Qt)
QTextCodec *c = QTextCodec::codecForName("Utf-8");
QTextCodec::setCodecForTr(c);
 
QString *str = (QObject::tr(STRUCT -> text));  
 
//STRUCT - структура записанная в бин-файл, text - поле с русским текстом
так тоже не получается:
Код
C++ (Qt)
QString *str = STRUCT -> text;
str->toUtf8();
 

Есть какие нибудь способы?
« Последнее редактирование: Ноябрь 06, 2013, 09:39 от helga1917 » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Ноябрь 06, 2013, 10:05 »

Читай через QTextStream, для него можно кодировку задать. Это если файл тестовый. А конкретные строки можно перекодировать через QString QTextCodec::toUnicode ( const QByteArray & a ) const
« Последнее редактирование: Ноябрь 06, 2013, 10:07 от Пантер » Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #2 : Ноябрь 06, 2013, 10:25 »

Ну и кодек соответственно:
Код
C++ (Qt)
QTextCodec::codecForName("CP-866");
Записан
helga1917
Гость
« Ответ #3 : Ноябрь 06, 2013, 11:21 »

спасибо, заработало

Код
C++ (Qt)
QTextCodec::setCodecForCStrings (QTextCodec::codecForName("cp-866"));
QString *str = STRUCT -> text;
 
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Ноябрь 06, 2013, 11:46 »

Зачем так???
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
helga1917
Гость
« Ответ #5 : Ноябрь 06, 2013, 12:05 »

Разве это неверно?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Ноябрь 06, 2013, 12:11 »

Зачем глобально для приложения выставлять кодировку? Конвертируй только необходимые строки.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
helga1917
Гость
« Ответ #7 : Ноябрь 06, 2013, 12:30 »

Код
C++ (Qt)
QTextCodec *russianCodec = QTextCodec::codecForName ("cp-866");
QString *str = russianCodec -> toUnicode (STRUCT -> text);
 
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #8 : Ноябрь 06, 2013, 12:31 »

Эм, QString *str зачем? toUnicode же вернет объект.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
helga1917
Гость
« Ответ #9 : Ноябрь 06, 2013, 12:50 »

у меня там массив таких строк, и нужно предавать указатель на конкретную строку в другую функцию
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #10 : Ноябрь 09, 2013, 17:31 »

>>у меня там массив таких строк, и нужно предавать указатель на конкретную строку в другую функцию
вот в неё и будешь указатель передавать.
А на эту запись компилятор матюгнётся, т.к. (читай пост Пантера)
Записан

Юра.
helga1917
Гость
« Ответ #11 : Ноябрь 13, 2013, 08:01 »

хорошо, исправлю
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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