Дело в том, что большинство файловых систем , отличных от , кроме NTFS, хранят свои имена файлов в байтах -строк. Обычно нет явного понятия кодирования, но имена файлов должны быть строками с ненулевыми байтами, оканчивающимися на ноль. Таким образом, во всех таких системах функции файловой системы просто принимают char*
аргументов для имен файлов, и вы сами должны решить, как решать проблемы с кодировкой (если они есть).
Windows особенная, потому что имена файлов в NTFS представляют собой строки с нулевым символом в конце 16-битных модулей. Это идет рука об руку с 16-битным типом wchar_t
в Windows и различными функциями _w*
файловой системы.