小编vro*_*oom的帖子

NTFS中存储的文件名是什么编码?

我刚刚开始编写一些程序来处理WinXP系统上具有非英文名称的文件名.我已经完成了一些关于unicode的推荐阅读,我认为我得到了基本的想法,但有些部分对我来说仍然不是很清楚.

具体来说,什么编码(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+");
Run Code Online (Sandbox Code Playgroud)

但这就是'ê°€.txt'.

我觉得UTF8编码的字符串足以打开Windows下的任何文件名,因为我似乎依稀记得一些Windows应用程序传递(char*),而不是(wchar_t*),并且没问题.

任何人都可以对此有所了解吗?

windows unicode ntfs

41
推荐指数
3
解决办法
4万
查看次数

stat() 是否有宽字符版本(来自 sys/stat.h)?

我一直在使用 stat() 来检查文件是否存在,据我所知,这是比尝试打开文件更好的做法。但是, stat() 不适用于包含其他语言的 unicode 字符的文件名。是否有 stat() 的宽字符版本,或者我可以使用的等效版本?

如果没有,检查文件存在的下一个可接受的解决方案是什么?

c file

1
推荐指数
1
解决办法
2523
查看次数

标签 统计

c ×1

file ×1

ntfs ×1

unicode ×1

windows ×1