Привет,всем!) У меня возникла проблема с QProcess,а именно с выводом текста с помощью readAllStandardError() и readAllStandardOutput().
Процесс обрабатывает команды командной строки и я вывожу результаты выполнения команд. Если в строке QString, считанной с помощью readAllStandardError() или readAllStandardOutput() есть латинские символы, они выводятся нормально, но если русский текст, то получается абракадабра. Например, если обрабатывается командная строка "mkdir C:\WorkDir", то с помощью QString strError = pProc->readAllStandardError(); вместо "Подпапка или файл C:\WorkDir уже существуют." получаю "Џ®¤Ї ЇЄ Ё«Ё д ©« C:\WorkDir 㦥 бгйҐбвўгҐв.".
Подскажите, пожалуйста, как получить текст в нормальной кодировке, или как такой нечитабельный текст преобразовать к нормальному виду?
Большое спасибо)
Смотри описание класса QTextCodec, там все есть
Вот такая вещь QTextCodec::setCodecForCStrings(QTextCodec::codecForName("windows-1251")); помогла только с командой tar - строки на русском выводятся нормально, но с остальными командными строками - без изменений
Попробуй кодировку IBM 866. Это вроде досовская кодировка которая используется в консоли Windows.
QByteArray ba = pProc->readAllStandardError();
QTextCodec *codec = QTextCodec::codecForName("IBM 866");
QString string = codec->toUnicode(ba);
Так работает!)Огромнейшее спасибо!!!!!!!!!)))Просто огромнейшее!)
Да не за что
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)