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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено] Qt 5.0.2, проблемы с русским текстом, полученным из html  (Прочитано 3433 раз)
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« : Декабрь 18, 2013, 07:08 »

Написал простой парсер и для разминки натравил его на русский сайт, страницы которого в Utf (парсить нужно именно рунет). QRegExp срабатывает и в результате в QPlainTextEdit вылезает список ссылок и анкоров, найденных на странице, но анкоры выглядят вот так:



Вот код моего обработчика 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-й версии, не знаю.

Подскажите пожалуйста, что нужно сделать или исправить, чтобы русский язык был виден?
« Последнее редактирование: Декабрь 18, 2013, 12:14 от PinkPanther » Записан

Эвтаназия - наше хобби!
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Декабрь 18, 2013, 10:48 »

попробуй явно задать имя кодека, раз ты точно знаешь кодировку входящего текста: QTextCodec *utf2 = QTextCodec::codecForName("UTF-8");

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

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« Ответ #2 : Декабрь 18, 2013, 11:07 »

Спасибо за совет!
Только что решил проблему немного другим путем, вообще без создания кодека.
Если кому вдруг понадобится, так выглядит код, дающий нормальный текст с Utf-8 страницы:

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

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

Эвтаназия - наше хобби!
Serr500
Гость
« Ответ #3 : Декабрь 18, 2013, 11:15 »

Не уверен правда, что этот код будет корректно работать со страницами в других кодировках.
Более того, можно быть уверенным, что он не будет работать со страницами в других кодировках.  Подмигивающий Например, он однозначно не будет работать в UTF-16 и в Win1251 при наличии кириллицы.
Записан
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« Ответ #4 : Декабрь 18, 2013, 12:13 »

Определенно.  Улыбающийся Только с латиницей.
Записан

Эвтаназия - наше хобби!
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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