Russian Qt Forum

Qt => Общие вопросы => Тема начата: BuRn от Август 04, 2014, 22:03



Название: Проблемы с кодировкой
Отправлено: BuRn от Август 04, 2014, 22:03
Добрый вечер, не пойму в чем проблема, есть хтмл страница в Windows-1251, получил я ее в QString, далее через QTextCodec пытаюсь ее перевести, но получаю лажу
Код:
QTextCodec *codec = QTextCodec::codecForName("Windows-1251");
QString dest = codec->fromUnicode( content.toStdString().c_str());
Где ошибся ?


Название: Re: Проблемы с кодировкой
Отправлено: Bepec от Август 04, 2014, 22:28
codec->fromUnicode типа ты её из юникода преобразуешь вроде. А не ToUnicode надо?


Название: Re: Проблемы с кодировкой
Отправлено: BuRn от Август 04, 2014, 22:31
codec->fromUnicode типа ты её из юникода преобразуешь вроде. А не ToUnicode надо?
Не, ситуация аналогичная


Название: Re: Проблемы с кодировкой
Отправлено: Kurles от Август 04, 2014, 22:53
Добрый вечер, не пойму в чем проблема, есть хтмл страница в Windows-1251, получил я ее в QString, далее через QTextCodec пытаюсь ее перевести, но получаю лажу
Код:
QTextCodec *codec = QTextCodec::codecForName("Windows-1251");
QString dest = codec->fromUnicode( content.toStdString().c_str());
Где ошибся ?
this. Надо ее не в QString получать, а в QByteArray, а потом, как правильно заметил уважаемый Верес использовать QString QTextCodec::toUnicode(..).


Название: Re: Проблемы с кодировкой
Отправлено: Nidxogg от Август 04, 2014, 22:55
Цитировать
QTextCodec *codec = QTextCodec::codecForName("Windows-1251");
QString dest = codec->toUnicode( content.toAscii());
Так попробуй


Название: Re: Проблемы с кодировкой
Отправлено: BuRn от Август 04, 2014, 23:05
Добрый вечер, не пойму в чем проблема, есть хтмл страница в Windows-1251, получил я ее в QString, далее через QTextCodec пытаюсь ее перевести, но получаю лажу
Код:
QTextCodec *codec = QTextCodec::codecForName("Windows-1251");
QString dest = codec->fromUnicode( content.toStdString().c_str());
Где ошибся ?
this. Надо ее не в QString получать, а в QByteArray, а потом, как правильно заметил уважаемый Верес использовать QString QTextCodec::toUnicode(..).
Благодарю, удалось. Хотя какое-то странное имхо поведение...


Название: Re: Проблемы с кодировкой
Отправлено: Kurles от Август 04, 2014, 23:10
Благодарю, удалось. Хотя какое-то странное имхо поведение...
Почему? Внутри ж QString в utf-8 все хранит, а при чтении в QString из cp1251 использовался кодек, установленный в void QTextCodec::setCodecForCStrings ( QTextCodec * codec ) [static], или какой там по умолчанию. И вот потом он уже один раз неправильно отдекодированное еще раз декодировать пытается, соответственно лажа получается.


Название: Re: Проблемы с кодировкой
Отправлено: kambala от Август 05, 2014, 10:44
Почему? Внутри ж QString в utf-8 все хранит
разве не в 16?


Название: Re: Проблемы с кодировкой
Отправлено: Kurles от Август 05, 2014, 13:21
Почему? Внутри ж QString в utf-8 все хранит
разве не в 16?
Точно. Ну тогда ж тем более понятно описываемое поведение.