В какой кодировке хранятся имена файлов в NTFS?

Я только начинаю программирование для обработки имен файлов с неанглийскими именами в системе WinXP. Я немного порекомендовал почитать юникод и думаю, что понял основную идею, но некоторые части мне все еще не очень понятны.

В частности, какая кодировка (UTF-8, UTF-16LE / BE) является файломимена (не содержание, а фактическое имя файла) хранится в NTFS? Можно ли открыть какой-либо файл, используя fopen (), который принимает символ char *, или у меня нет другого выбора, кроме как использовать wfopen (), который использует wchar_t * и предположительно принимает строку UTF-16?

Я попытался вручную ввести строку в кодировке UTF-8 в fopen (), например.

unsigned char filename[] = {0xEA, 0xB0, 0x80, 0x2E, 0x74, 0x78, 0x74, 0x0}; // 가.txt

FILE* f = fopen((char*)filename, "wb+");

но это вышло как 'ê ° € .txt'.

У меня сложилось впечатление (что может быть неверно), что строки в кодировке UTF8 будет достаточно для открытия любого имени файла под Windows, потому что я, похоже, смутно помню, как некоторые приложения Windows передают (char *), а не (wchar_t *) и имеют Нет проблем.

Может кто-нибудь пролить некоторый свет на это?

Ответы на вопрос(3)

Ваш ответ на вопрос