Наборы символов, используемые в именах файлов

NTFS сохраняет имена файлов в Юникоде. В отличие от этого, в более старых файловых системах FAT12, FAT16 и FAT32 используется кодировка OEM. Дополнительные сведения см. в разделе Кодовые страницы.

Приложениям без Юникода, создающим FAT-файлы, иногда приходится использовать стандартные функции преобразования библиотеки среды выполнения C для перевода между набором символов кодовой страницы Windows и набором символов кодовой страницы OEM. При использовании реализаций функций файловой системы в Юникоде выполнять такие переводы не требуется.

Приложение может использовать универсальные строковые типы, как описано в разделе Типы данных Windows для строк. Приложение также может использовать универсальные прототипы функций, используя методы, описанные в разделе Соглашения о прототипах функций. Для универсальных строковых типов или прототипов универсальных функций приложение может использовать один исходный файл для компиляции версии Юникода или версии, отличной от Юникода. Для этого приложение предоставляет макросы для функций, которые не вызываются при компиляции для Юникода.

В файловых системах NTFS и FAT специальные символы имени файла: "\", "/", ".", "?", "*". На кодовых страницах OEM эти специальные символы находятся в диапазоне символов ASCII (0x00 по 0x7F). Их эквиваленты в Юникоде являются одинаковыми значениями в 2-байтовой форме, 0x0000 по 0x007F.

Внимание!

Наборы символов кодовой страницы Windows и кодовой страницы OEM, используемые в операционных системах на японском языке, содержат символ йены (""), а не обратную косую черту (\). Таким образом, символ иены является запрещенным символом для файловых систем NTFS и FAT. При сопоставлении Юникода с кодовой страницей на японском языке WideCharToMultiByte и другие функции преобразования сопоставляют обратную косую черту (U+005C) и обычный символ Юникода йены (U+00A5) с этим же символом. Из соображений безопасности приложения обычно не должны разрешать символ U+00A5 в строке Юникода, которая может быть преобразована для использования в качестве имени файла FAT. Дополнительные сведения см. в разделе Вопросы безопасности: международные функции.

 

Юникод в Windows API

Вопросы безопасности: международные функции