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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблемы с кодировкой  (Прочитано 4270 раз)
BuRn
Гость
« : Август 04, 2014, 22:03 »

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

codec->fromUnicode типа ты её из юникода преобразуешь вроде. А не ToUnicode надо?
Записан
BuRn
Гость
« Ответ #2 : Август 04, 2014, 22:31 »

codec->fromUnicode типа ты её из юникода преобразуешь вроде. А не ToUnicode надо?
Не, ситуация аналогичная
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #3 : Август 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(..).
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Nidxogg
Гость
« Ответ #4 : Август 04, 2014, 22:55 »

Цитировать
QTextCodec *codec = QTextCodec::codecForName("Windows-1251");
QString dest = codec->toUnicode( content.toAscii());
Так попробуй
Записан
BuRn
Гость
« Ответ #5 : Август 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(..).
Благодарю, удалось. Хотя какое-то странное имхо поведение...
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #6 : Август 04, 2014, 23:10 »

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

Код
C++ (Qt)
while(!asleep()) sheep++;
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #7 : Август 05, 2014, 10:44 »

Почему? Внутри ж QString в utf-8 все хранит
разве не в 16?
Записан

Изучением 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
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #8 : Август 05, 2014, 13:21 »

Почему? Внутри ж QString в utf-8 все хранит
разве не в 16?
Точно. Ну тогда ж тем более понятно описываемое поведение.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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