Windows如何处理不区分大小写的文件名和路径?

时间:2012-01-17 18:44:13

标签: windows string locale case-insensitive

在Windows上,文件比较是不区分大小写的操作。但是,真正不区分大小写的系统会对区域设置敏感,并且必须处理三种情况,而不是两种情况(至少根据Unicode)。出于各种原因,如果可能的话,我想复制Windows在Windows之外的方式。

Windows是否使用这种语言环境支持,还是遵循更可预测的模式(例如,有点像C#的OrdinalIgnoreCase设置)?

1 个答案:

答案 0 :(得分:2)

据我所知,NTFS支持两种模式:

  1. POSIX命名空间:
    除U + 0000(NUL)和/(斜杠)之外的任何UTF-16代码单元(区分大小写)。

  2. Win32命名空间:
    任何UTF-16代码单元(不区分大小写),除了U + 0000(NUL)/(斜杠)\(反斜杠)和其他一些字符,如:*"等。

  3. 在Win32模式下,任何使用Win32-API的程序都会将文件名的任何字符转换为大写(如果可能)并在内部使用该名称。