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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qprocess и 866  (Прочитано 2923 раз)
admsasha
Гость
« : Май 28, 2014, 13:54 »

Нужно в QProcess запустить программу, путь который содержит русские буквы

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

OS: windows
QT 4.8
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Май 28, 2014, 13:56 »

QTextCodec
Записан

Изучением 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
admsasha
Гость
« Ответ #2 : Май 28, 2014, 14:00 »

Вариации типа:
Код:
    QTextCodec *codec = QTextCodec::codecForName("CP866");
    QByteArray encodedString = codec->fromUnicode(path);
не работают. Не пойму, что не так делаю
Записан
Old
Джедай : наставник для всех
*******
Online Online

Сообщений: 4350



Просмотр профиля
« Ответ #3 : Май 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" );
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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