crossplatform.ru

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

> linux. Программа не находит файл, если в пути к нему есть русские буквы, как лечить?
Rocky
  опции профиля:
сообщение 24.11.2010, 10:22
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

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




Репутация:   7  


Всем привет! Кто-нибдь знает, как решается проблема, если путь до самой программы, или пути к открываемым файлам, содержат русские буквы... В винде все работает.. а в линуксе нифига (
Вот например открываю текстовый файл
const QString sPath = qApp->applicationDirPath() + qApp->tr("/Methodics/%1").arg(oMethodic.sMethodicName);
#ifdef UNICODE
std::wstring sFileNameStd1 = sBuf1.toStdWString();
#else 
std::string sFileNameStd1 = sBuf1.toStdString();
#endif

//открываем файл
std::ifstream file1(sFileNameStd1.c_str(), std::ios::in);
if (file1)
{
.....
}


oMethodic.sMethodicName содержит русское слово =), которое абсолютно нормально отображается в QMessageBox. В то же время внутрь if (file1) я не попадаю...

UPD
Да, сам путь и файл естественно существует.

Сообщение отредактировал Rocky - 24.11.2010, 10:23
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
BRE
  опции профиля:
сообщение 24.11.2010, 10:31
Сообщение #2


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

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

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




Репутация:   44  


А в main установлены всякие?
QTextCodec::setCodecForTr(...)
QTextCodec::setCodecForCString(...)

А define UNICODE определен?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 24.11.2010, 13:38
Сообщение #3


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

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




Репутация:   7  


Цитата(BRE @ 24.11.2010, 10:31) *
А в main установлены всякие?
QTextCodec::setCodecForTr(...)
QTextCodec::setCodecForCString(...)

да. Вот
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForTr());

Цитата(BRE @ 24.11.2010, 10:31) *
А define UNICODE определен?

Нет, это для MS Visual Studio в винде... Под linux (в Qt Creator) не определяю.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 9.6.2025, 16:48