我刚刚开始进行一些编程,以在 WinXP 系统上处理具有非英文名称的文件名。我已经完成了一些关于 unicode 的推荐阅读,我想我明白了基本的想法,但有些部分对我来说仍然不是很清楚。
具体来说,存储在 NTFS 中的文件名(不是内容,而是文件的实际名称)是什么编码(UTF-8、UTF-16LE/BE) ?是否可以使用 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*),并且有没问题。
任何人都可以对此有所了解吗?