PHP - 在 Windows 上处理 UTF-8 文件名
问题陈述
上传具有 UTF-8 编码文件名的文件会导致 Windows 上的字符扭曲。
建议的解决方案
解决此问题的原始建议涉及使用 iconv() 函数将文件名转换为与 Windows 系统兼容的代码页,例如 CP1258。但是,这种方法有局限性。
更新的解决方案
实际上,PHP 文件系统函数只能处理系统活动代码页内的字符。因此,出现了两种可能的解决方案:
选项 1:
- 将文件名字符限制为系统的代码页(例如,您的情况为 CP437)
- 此选项限制越南语字符的使用。
选项 2:
- 将系统的代码页更改为越南语(例如 CP1258 )
- 将文件名转换为新的代码页(例如,$fn2 = iconv("UTF-8","cp1258", $base_dir.$fn);)
- 此选项也将文件名字符限制为越南语代码页 1258。
两种选项的缺点:
-
选项 1: 无法使用某些越南语字符
-
选项 2:更改系统代码页的要求和文件名字符的限制
有关更改系统代码页的其他信息
要更改系统的代码页:
- 导航到控制面板>地区
- 选择“管理”选项卡
- 在“非 Unicode 程序的语言”下,单击“更改系统区域设置”按钮
- 选择“越南语(越南)”从下拉菜单
以上是如何在 Windows 上的 PHP 中处理 UTF-8 文件名?的详细内容。更多信息请关注PHP中文网其他相关文章!