Я только начинаю программирование для обработки имен файлов с неанглийскими именами в системе 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 *) и без проблем.
Может кто-нибудь пролить свет на это?