文件名中使用的字符集
NTFS 将文件名存储在 Unicode 中。 相比之下,较旧的 FAT12、FAT16 和 FAT32 文件系统使用 OEM 字符集。 有关详细信息,请参阅 代码页。
创建 FAT 文件的非 Unicode 应用程序有时必须使用标准 C 运行时库转换函数在 Windows 代码页字符集和 OEM 代码页字符集之间进行转换。 使用文件系统函数的 Unicode 实现时,无需执行此类翻译。
应用程序可以使用泛型字符串类型,如 适用于字符串的 Windows 数据类型中所述。 应用程序还可以使用函数原型 约定中所述的技术使用泛型函数原型。 对于泛型字符串类型或泛型函数原型,应用程序可以使用单个源文件编译 Unicode 或非 Unicode 版本。 为此,应用程序为编译 Unicode 时未调用的函数提供宏。
在 NTFS 和 FAT 文件系统中,特殊文件名字符为:“\”、“/”、“.”、“?”和“*”。 在 OEM 代码页上,这些特殊字符位于 ASCII 字符范围(0x00到0x7F)。 它们的 Unicode 等效项是 2 字节形式的相同值,0x0000到0x007F。
谨慎
日语作系统上使用的 Windows 代码页和 OEM 代码页字符集包含日元符号 (¥) 而不是反斜杠 (\)。 因此,日元符号是 NTFS 和 FAT 文件系统的禁止字符。 将 Unicode 映射到日语语言代码页时,WideCharToMultiByte 和其他转换函数将反斜杠(U+005C)和普通 Unicode 日元符号(U+00A5)映射到同一个字符。 出于安全原因,应用程序通常不允许 Unicode 字符串中的字符 U+00A5,该字符串可能转换为 FAT 文件名。 有关详细信息,请参阅 安全注意事项:国际功能。
相关主题
-
在 Windows API 中 Unicode