Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ Как получить читабельный текст с помощью readAllStandardError()?

Автор: XXL 26.4.2009, 13:27

Привет,всем!) У меня возникла проблема с QProcess,а именно с выводом текста с помощью readAllStandardError() и readAllStandardOutput().
Процесс обрабатывает команды командной строки и я вывожу результаты выполнения команд. Если в строке QString, считанной с помощью readAllStandardError() или readAllStandardOutput() есть латинские символы, они выводятся нормально, но если русский текст, то получается абракадабра. Например, если обрабатывается командная строка "mkdir C:\WorkDir", то с помощью QString strError = pProc->readAllStandardError(); вместо "Подпапка или файл C:\WorkDir уже существуют." получаю "Џ®¤Ї ЇЄ Ё«Ё д ©« C:\WorkDir 㦥 бгйҐбвўгҐв.".
Подскажите, пожалуйста, как получить текст в нормальной кодировке, или как такой нечитабельный текст преобразовать к нормальному виду?
Большое спасибо)

Автор: igor_bogomolov 26.4.2009, 15:21

Смотри описание класса QTextCodec, там все есть ;)

Автор: XXL 26.4.2009, 15:41

Вот такая вещь QTextCodec::setCodecForCStrings(QTextCodec::codecForName("windows-1251")); помогла только с командой tar - строки на русском выводятся нормально, но с остальными командными строками - без изменений

Автор: igor_bogomolov 26.4.2009, 15:59

Попробуй кодировку IBM 866. Это вроде досовская кодировка которая используется в консоли Windows.


QByteArray ba = pProc->readAllStandardError();
QTextCodec *codec = QTextCodec::codecForName("IBM 866");
QString string = codec->toUnicode(ba);

Автор: XXL 26.4.2009, 16:14

Так работает!)Огромнейшее спасибо!!!!!!!!!)))Просто огромнейшее!)

Автор: igor_bogomolov 26.4.2009, 16:23

Да не за что :D

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)