crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как получить читабельный текст с помощью readAllStandardError()?
XXL
  опции профиля:
сообщение 26.4.2009, 13:27
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 30
Регистрация: 26.4.2009
Пользователь №: 708

Спасибо сказали: 0 раз(а)




Репутация:   0  


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


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Смотри описание класса QTextCodec, там все есть ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
XXL
  опции профиля:
сообщение 26.4.2009, 15:41
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 30
Регистрация: 26.4.2009
Пользователь №: 708

Спасибо сказали: 0 раз(а)




Репутация:   0  


Вот такая вещь QTextCodec::setCodecForCStrings(QTextCodec::codecForName("windows-1251")); помогла только с командой tar - строки на русском выводятся нормально, но с остальными командными строками - без изменений
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 26.4.2009, 15:59
Сообщение #4


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


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


QByteArray ba = pProc->readAllStandardError();
QTextCodec *codec = QTextCodec::codecForName("IBM 866");
QString string = codec->toUnicode(ba);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
XXL
  опции профиля:
сообщение 26.4.2009, 16:14
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 30
Регистрация: 26.4.2009
Пользователь №: 708

Спасибо сказали: 0 раз(а)




Репутация:   0  


Так работает!)Огромнейшее спасибо!!!!!!!!!)))Просто огромнейшее!)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 26.4.2009, 16:23
Сообщение #6


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Да не за что :D
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 9.12.2022, 15:51