PHP使用非拉丁文件名检测文件系统编码/保存文件

Eve*_*ert 8 php filesystems unicode

我需要使用PHP在文件系统上保存带有非拉丁文件名的文件.

我想让这项工作跨平台.我怎么知道我可以使用什么编码来编写文件?我知道许多现代文件系统都是基于UTF-8(这是正确的吗?),但我怀疑Windows XP(例如).

那么,是否有一个强大的检测机制?

Pek*_*ica 6

不是你的问题的答案,但如果你不需要在文件系统级别(如搜索,排序......)上进行大量操作,那么这个SO问题中概述的问题有一个很好的跨平台解决方法:URLEncode()文件名.

Hörensägen.txt 
Run Code Online (Sandbox Code Playgroud)

变成了

H%c3%b6rens%c3%a4gen.txt
Run Code Online (Sandbox Code Playgroud)

这应该是安全的在任何文件系统中使用,并能够映射任何UTF-8字符.

我发现这比尝试"本地"处理主机操作系统的功能要好得多,这保证是复杂且容易出错的(除了操作系统的差异,我确定各种文件系统格式 - FAT16,FAT32,NTFS ,extFS版本1/2/3 ....带来他们自己的一套规则要注意.)