Russian Qt Forum

Qt => Вопросы новичков => Тема начата: PinkPanther от Декабрь 18, 2013, 07:08



Название: [Решено] Qt 5.0.2, проблемы с русским текстом, полученным из html
Отправлено: PinkPanther от Декабрь 18, 2013, 07:08
Написал простой парсер и для разминки натравил его на русский сайт, страницы которого в Utf (парсить нужно именно рунет). QRegExp срабатывает и в результате в QPlainTextEdit вылезает список ссылок и анкоров, найденных на странице, но анкоры выглядят вот так:

(http://4twi.ru/russian.jpg)

Вот код моего обработчика QNetworkRequest (он возвращает страницу в htmlPage):

Код:
void MainWindow::getHtmlResults(QNetworkReply * reply)
{
    QByteArray total = reply->readAll();
    QTextCodec *utf2 = QTextCodec::codecForHtml(total);
    htmlPage = utf2->toUnicode(total);

    statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
}

В программе используется русский - русские надписи на кнопках и т.д., но для работы с русским текстом я пока ничего не настраивал, и как настраивать в 5-й версии, не знаю.

Подскажите пожалуйста, что нужно сделать или исправить, чтобы русский язык был виден?


Название: Re: Qt 5.0.2, проблемы с русским текстом, полученным из html
Отправлено: kambala от Декабрь 18, 2013, 10:48
попробуй явно задать имя кодека, раз ты точно знаешь кодировку входящего текста: QTextCodec *utf2 = QTextCodec::codecForName("UTF-8");

хотя содержимое скрина на UTF-8 по-моему не тянет (там обычно все буквы начинаются с 'Р')…


Название: Re: Qt 5.0.2, проблемы с русским текстом, полученным из html
Отправлено: PinkPanther от Декабрь 18, 2013, 11:07
Спасибо за совет!
Только что решил проблему немного другим путем, вообще без создания кодека.
Если кому вдруг понадобится, так выглядит код, дающий нормальный текст с Utf-8 страницы:

Код:
void MainWindow::getHtmlResults(QNetworkReply * reply)
{
    htmlPage = QString::fromUtf8(reply->readAll());
    statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
}

Не уверен правда, что этот код будет корректно работать со страницами в других кодировках.


Название: Re: Qt 5.0.2, проблемы с русским текстом, полученным из html
Отправлено: Serr500 от Декабрь 18, 2013, 11:15
Не уверен правда, что этот код будет корректно работать со страницами в других кодировках.
Более того, можно быть уверенным, что он не будет работать со страницами в других кодировках.  ;) Например, он однозначно не будет работать в UTF-16 и в Win1251 при наличии кириллицы.


Название: Re: Qt 5.0.2, проблемы с русским текстом, полученным из html
Отправлено: PinkPanther от Декабрь 18, 2013, 12:13
Определенно.  :) Только с латиницей.