Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функция opendir не может открыть папку на русском 
:(
    Опции темы
Ivan1
Дата 25.6.2014, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 12.8.2007

Репутация: нет
Всего: нет



Здравствуйте.Часть кода с функцией opendir:
Код

...
DIR *dir;
struct dirent * dir_entry;
if((dir=opendir(name_dir))==NULL)
{
    cout<<"Error"<<endl;
}
...

Если открывать директорию с именем на русском языке, то выдается ошибка. Если переименовать эту директорию на английском языке или цифрами и еще раз попробовать открыть, то ошибки нет. Подскажите как решить эту проблему?Зарание спасибо.
PM MAIL   Вверх
xvr
Дата 26.6.2014, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Какая ОС и какая кодировка символов с строке 'на русском языке'? Если Window, то кодировка должна совпадать с текущей локалью системы (cp1251 скорее всего), для Linux - UTF-8 (IMHO)

PM MAIL   Вверх
Ivan1
Дата 26.6.2014, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 12.8.2007

Репутация: нет
Всего: нет



Цитата(xvr @ 26.6.2014,  11:31)
Какая ОС и какая кодировка символов с строке 'на русском языке'? Если Window, то кодировка должна совпадать с текущей локалью системы (cp1251 скорее всего), для Linux - UTF-8 (IMHO)

ОС:Windows XP
Среда разработки:Dev-C++
Текущую локаль системы не знаю.
Как узнать текущую локаль системы и  как поменять кодировку?

Это сообщение отредактировал(а) Ivan1 - 26.6.2014, 12:21
PM MAIL   Вверх
xvr
Дата 26.6.2014, 12:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(Ivan1 @  26.6.2014,  11:51 Найти цитируемый пост)
Текущую локаль системы не знаю.

Если у вас русская windows, то локаль системы - cp1251.

Цитата(Ivan1 @  26.6.2014,  11:51 Найти цитируемый пост)
 как поменять кодировку?

Смотрите функции MultiByteToWideChar и WideCharToMultiByte
А лучше сразу переходите на Unicode и/или родные Windows функции (FindFirstFileFindNextFileFindClose)
  
PM MAIL   Вверх
Ivan1
Дата 26.6.2014, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 12.8.2007

Репутация: нет
Всего: нет



Цитата

...Смотрите функции MultiByteToWideChar и WideCharToMultiByte...

Спасибо.Посмотрю.)
Цитата

...А лучше сразу переходите на Unicode...

А как перейти на Unicode?
PM MAIL   Вверх
xvr
Дата 26.6.2014, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(Ivan1 @  26.6.2014,  13:01 Найти цитируемый пост)
А как перейти на Unicode? 

В настройках проекта (прямо на первой странице) ставите 'Character Set' в 'Use Unicode character set' (это если у вас английская версия студии). Но учтите, что и в самой программе вам придется это предусмотреть - все вызовы Win32 API теперь будут принимать строки не в виде char*, а в виде wchar_t*

PM MAIL   Вверх
EgoBrain
Дата 27.6.2014, 03:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

Репутация: нет
Всего: 2



Цитата(Ivan1 @ 26.6.2014,  13:01)
Цитата

...Смотрите функции MultiByteToWideChar и WideCharToMultiByte...

Спасибо.Посмотрю.)
Цитата

...А лучше сразу переходите на Unicode...

А как перейти на Unicode?

Готовься к тому что скорее всего ты г*вна не оберешься от этого перехода, и будешь недобро вспоминать xvr
Советую вначале прочеть небольшую статейку рассвого жида Джоеля Спольски, ксатит и название статии как бы намекает:
Абсолютный Минимум, который Каждый Разработчик Программного Обеспечения Обязательно Должен Знать о Unicode и Наборах Символов
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0751 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.