在Windows上,文件比较是不区分大小写的操作。但是,真正不区分大小写的系统会对区域设置敏感,并且必须处理三种情况,而不是两种情况(至少根据Unicode)。出于各种原因,如果可能的话,我想复制Windows在Windows之外的方式。
Windows是否使用这种语言环境支持,还是遵循更可预测的模式(例如,有点像C#的OrdinalIgnoreCase设置)?
答案 0 :(得分:2)
据我所知,NTFS支持两种模式:
POSIX命名空间:
除U + 0000(NUL)和/(斜杠)之外的任何UTF-16代码单元(区分大小写)。
Win32命名空间:
任何UTF-16代码单元(不区分大小写),除了U + 0000(NUL)/(斜杠)\(反斜杠)和其他一些字符,如:*"
等。
在Win32模式下,任何使用Win32-API的程序都会将文件名的任何字符转换为大写(如果可能)并在内部使用该名称。