Не ответ на ваш вопрос, но если вам не нужно выполнять обширные операции на уровне файловой системы (например, поиск, сортировка ...), есть хороший межплатформенный обходной путь для проблемы, описанной в этот ТАК вопрос : URLEncode()
имя файла.
Hörensägen.txt
превращается в
H%c3%b6rens%c3%a4gen.txt
, который должен быть безопасным для использования в любой файловой системе и может отображать любой символ UTF-8.
Я считаю, что это гораздо предпочтительнее, чем пытаться "изначально" работать с возможностями ОС, которая гарантированно является сложной и подверженной ошибкам (помимо различий в операционных системах, я уверен, что существуют различные форматы файловой системы - FAT16 FAT32, NTFS, extFS версии 1/2/3 .... имеют собственный набор правил, о которых следует знать.)