Имя файла с иероглифами и CreateFile
От: Poseidon СССР  
Дата: 09.02.18 19:29
Оценка:
Наверное глупый вопрос.. но что-то туплю. На диске файл с иероглифами вперемешку с нормальными символами. Проект НЕ Unicode. Вопрос — как правильно сохранить имя файла? Если заменить иероглифы на знаки вопроса то ничерта не открывается, имя неправильное. А строка для имени в char. Что делать? Может переименовать его? Или можно как то сладить с иероглифами этими?
Отредактировано 09.02.2018 19:29 Poseidon . Предыдущая версия .
Re: Имя файла с иероглифами и CreateFile
От: Alexander G Украина  
Дата: 09.02.18 19:36
Оценка: 1 (1) +3
Здравствуйте, Poseidon, Вы писали:

P>Наверное глупый вопрос.. но что-то туплю. На диске файл с иероглифами вперемешку с нормальными символами. Проект НЕ Unicode. Вопрос — как правильно сохранить имя файла? Если заменить иероглифы на знаки вопроса то ничерта не открывается, имя неправильное. А строка для имени в char. Что делать? Может переименовать его? Или можно как то сладить с иероглифами этими?


В теории, может существовать кодовая страница, в которой можно именно с этим именем работать, и может быть возможность её указать.

На практике CreateFileW вызывать надо с Unicode-строкой. Если нужно пронести через стек вызовов до CreateFileW как char* строку, можно передавать как UTF-8, и перед вызовом CreateFileW её конвертировать в wide-строку.
Русский военный корабль идёт ко дну!
Re[2]: Имя файла с иероглифами и CreateFile
От: Poseidon СССР  
Дата: 12.02.18 07:24
Оценка:
Здравствуйте, Alexander G, Вы писали:

AG>Здравствуйте, Poseidon, Вы писали:


P>>Наверное глупый вопрос.. но что-то туплю. На диске файл с иероглифами вперемешку с нормальными символами. Проект НЕ Unicode. Вопрос — как правильно сохранить имя файла? Если заменить иероглифы на знаки вопроса то ничерта не открывается, имя неправильное. А строка для имени в char. Что делать? Может переименовать его? Или можно как то сладить с иероглифами этими?


AG>В теории, может существовать кодовая страница, в которой можно именно с этим именем работать, и может быть возможность её указать.


AG>На практике CreateFileW вызывать надо с Unicode-строкой. Если нужно пронести через стек вызовов до CreateFileW как char* строку, можно передавать как UTF-8, и перед вызовом CreateFileW её конвертировать в wide-строку.


Спасибо! Помогло.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.