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