Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > русский путь к программе


Автор: kuvshinka 17.2.2014, 16:15
У меня каталог windows-программы русскоязычен (например c:\папка1\MyProject) - это обязательно !!! из-за этого программа не собирается (не проходит qmake) и из-за этого же не находит файл:
например 
Код

   QFile myfile(QDir::currentPath()+"/директория1/file.cpp");

   if (myfile.exists())
     qDebug() << "exists" << "  " <<  QDir::currentPath();
   else
     qDebug() << "no file..." ; 

ответ будет "no file..." ...
Подскажите пож-та как можно решить проблему наличия русских символов в каталоге программы или при использовании таковых в самой windows-программе (например как в коде выше)?

Автор: math64 18.2.2014, 07:11
Код

QDir::currentPath()+QDir::separator() + tr("директория1") + QDir::separator() + "file.cpp";

Если исходики в UTF8, используется trUtf8().
Можно использовать QString::fromLocal8Bit() или QString::fromUtf8() соответственно.

Автор: bsa 18.2.2014, 11:46
kuvshinka, проблему со сборкой возможно решить не получится.

Автор: kuvshinka 18.2.2014, 22:09
math64: но и в QDir::currentPath() могут быть русские буквы...

Автор: math64 19.2.2014, 07:47
kuvshinka, проблема в том, что когда вы пишете "директория1", для преобразования в строку по умолчанию используется кодировка latin1. Можно поменять кодировку по умолчанию с помощью методов QTextCodec::setCodecFor...()
QDir::currentPath() должен прамильно работать даже если в пути есть русские буквы.
Вот фрагмент исходников:
Код

        DWORD size = 0;
        wchar_t currentName[PATH_MAX];
        size = ::GetCurrentDirectory(PATH_MAX, currentName);
        ... /* здесь проверка на size > PATH_MAX */
        ret = QString::fromWCharArray(currentName);

Если возникает проблема с сборкой, не используйте русские буквы в исходниках, используйте tr("directory1") и подключите файл переводов.
Код

    <message>
        <source>directory1</source>
        <translation>директория1</translation>
    </message>


Добавлено через 6 минут и 56 секунд
Ну и кроме того, разместите проект в каталог, в пути которого нет русских букв.
На собранную программу таких ограничений нет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)