Russian Qt Forum

Qt => Вопросы новичков => Тема начата: helga1917 от Ноябрь 06, 2013, 09:34



Название: dos-кодировка
Отправлено: 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();
 

Есть какие нибудь способы?


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


Название: Re: dos-кодировка
Отправлено: LisandreL от Ноябрь 06, 2013, 10:25
Ну и кодек соответственно:
Код
C++ (Qt)
QTextCodec::codecForName("CP-866");


Название: Re: dos-кодировка
Отправлено: helga1917 от Ноябрь 06, 2013, 11:21
спасибо, заработало

Код
C++ (Qt)
QTextCodec::setCodecForCStrings (QTextCodec::codecForName("cp-866"));
QString *str = STRUCT -> text;
 


Название: Re: dos-кодировка
Отправлено: Пантер от Ноябрь 06, 2013, 11:46
Зачем так???


Название: Re: dos-кодировка
Отправлено: helga1917 от Ноябрь 06, 2013, 12:05
Разве это неверно?


Название: Re: dos-кодировка
Отправлено: Пантер от Ноябрь 06, 2013, 12:11
Зачем глобально для приложения выставлять кодировку? Конвертируй только необходимые строки.


Название: Re: dos-кодировка
Отправлено: helga1917 от Ноябрь 06, 2013, 12:30
Код
C++ (Qt)
QTextCodec *russianCodec = QTextCodec::codecForName ("cp-866");
QString *str = russianCodec -> toUnicode (STRUCT -> text);
 


Название: Re: dos-кодировка
Отправлено: Пантер от Ноябрь 06, 2013, 12:31
Эм, QString *str зачем? toUnicode же вернет объект.


Название: Re: dos-кодировка
Отправлено: helga1917 от Ноябрь 06, 2013, 12:50
у меня там массив таких строк, и нужно предавать указатель на конкретную строку в другую функцию


Название: Re: dos-кодировка
Отправлено: lit-uriy от Ноябрь 09, 2013, 17:31
>>у меня там массив таких строк, и нужно предавать указатель на конкретную строку в другую функцию
вот в неё и будешь указатель передавать.
А на эту запись компилятор матюгнётся, т.к. (читай пост Пантера)


Название: Re: dos-кодировка
Отправлено: helga1917 от Ноябрь 13, 2013, 08:01
хорошо, исправлю