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

标签 php unicode filesystems

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

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

那么,是否有一个健壮的检测机制?

最佳答案

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

Hörensägen.txt 

变成了

H%c3%b6rens%c3%a4gen.txt

它应该可以在任何文件系统中安全使用,并且能够映射任何 UTF-8 字符。

我发现这比尝试“本地”处理主机操作系统的功能更可取,这肯定会很复杂且容易出错(除了操作系统差异之外,我确信各种文件系统格式 - FAT16, FAT32、NTFS、extFS 版本 1/2/3.... 有自己的一套规则需要注意。)

关于PHP 检测文件系统编码/保存非拉丁文文件名的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2522722/

相关文章:

javascript - 何时使用或不使用 toLocale 方法?

unicode - `` 这个符号是什么,为什么有些人看不到呢?

Java:将字符串 "\uFFFF"转换为 char

Java JCIFS如何正确地将文件从Samba复制到Windows本地?

linux - 有什么办法可以列出 Linux 内核支持的 inotify 事件吗?

filesystems - 我可以在 s3 中存储多少个文件有限制吗?

php - MySQL 5.6上的SQL请求错误

php - 查询以将表中的行与数字列表进行匹配,按匹配的行数排序,并与标签进行匹配并执行相同的操作?

php - PHP 转义字符串中的 JS(用于函数)

php - IE 中是否有 dir=auto 的替代属性