Название: QFile и длинные имена файлов в Виндоуз Отправлено: Smogg от Январь 05, 2013, 08:27 На WinAPI все понятно: все системные функции работают только и исключительно с Юникодом.
А как заставить QFile читать файлы с мешаниной из русских, арабских, еврейских и пр. символами в пути, да еще и с пробелами? Название: Re: QFile и длинные имена файлов в Виндоуз Отправлено: Old от Январь 05, 2013, 08:43 На WinAPI все понятно: все системные функции работают только и исключительно с Юникодом. А в чем проблема.А как заставить QFile читать файлы с мешаниной из русских, арабских, еврейских и пр. символами в пути, да еще и с пробелами? QFile получает имя файла через QString, которая тоже хранит юникод. Название: Re: QFile и длинные имена файлов в Виндоуз Отправлено: Smogg от Январь 05, 2013, 10:22 А в чем проблема. QFile получает имя файла через QString, которая тоже хранит юникод. Проблема в том, что я не знаю, как засунуть юникод в Qstring. Код: QString file(L"c:/Qt/Мойстиль/حدالأنشطة.qss"); вываливается в : C:\!Qt_Creator\trftuy\main.cpp:10: error: C2664: 'QString::QString(const QChar *)' : cannot convert parameter 1 from 'const unsigned short [46]' to 'const QChar *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast А если так: Код: QString file(QString::fromUtf16(L"c:/Qt/Мойстиль/حدالأنشطة.qss")); То в дебаге креатора переменная file превращается в: "c:/Qt/Мойстиль/ШШЇШ§Щ„ШЈЩ†ШґШ·Ш©.qss" UPD: В студии все отображается и открывается корректно. В Креаторе - нет. Название: Re: QFile и длинные имена файлов в Виндоуз Отправлено: Old от Январь 05, 2013, 10:27 Почитай про QTextCodec, там подробно все показывается.
Название: Re: QFile и длинные имена файлов в Виндоуз Отправлено: gil9red от Январь 05, 2013, 17:18 Смотрите tr() - QObject::tr() или QTextCodec::tr(),
а также QTextStream::setCodec(), это уже для работы с QFile при чтении/записи в файл :) |