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