Russian Qt Forum

Qt => Вопросы новичков => Тема начата: admsasha от Май 28, 2014, 13:54



Название: Qprocess и 866
Отправлено: admsasha от Май 28, 2014, 13:54
Нужно в QProcess запустить программу, путь который содержит русские буквы

Как можно перекодировать строку UTF8, в 866, что бы подсунуть в QProcess ?

OS: windows
QT 4.8


Название: Re: Qprocess и 866
Отправлено: kambala от Май 28, 2014, 13:56
QTextCodec


Название: Re: Qprocess и 866
Отправлено: admsasha от Май 28, 2014, 14:00
Вариации типа:
Код:
    QTextCodec *codec = QTextCodec::codecForName("CP866");
    QByteArray encodedString = codec->fromUnicode(path);
не работают. Не пойму, что не так делаю


Название: Re: Qprocess и 866
Отправлено: Old от Май 28, 2014, 14:18
Как можно перекодировать строку UTF8, в 866, что бы подсунуть в QProcess ?
QProcess ждет именно QString, в котором уже юникод.
Нужно правильно этот QString получать. Если исходники в utf-8, то самое простое использовать trUtf8:
Код
C++ (Qt)
QString filename = QObject::trUtf8( "путь/до/файла/файл.exe" );
 

или то же через QTextCodec:
Код
C++ (Qt)
QTextCodec *codec = QTextCodec::codecForName( "UTF-8" );
QString filename = codec->toUnicode( "путь/до/файла/файл.exe" );