栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用UTF-8字符串在PHP中使用文件系统功能?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用UTF-8字符串在PHP中使用文件系统功能?

只是

urlenpre
所需的字符串作为文件名。 从中返回的 所有
字符
urlenpre
在文件名(NTFS / HFS /
UNIX)中均有效,然后您可以
urldepre
将文件名改回UTF-8(或它们使用的任何编码)。

注意事项(同样适用于以下解决方案):

  • 进行网址编码后,文件名必须少于255个字符(可能是字节)。
  • UTF-8具有许多字符的多种表示形式(使用组合字符)。如果您不对UTF-8进行标准化,则可能无法搜索
    glob
    或重新打开单个文件。
  • 您不能依赖
    scandir
    或类似功能进行alpha排序。
    urldepre
    然后,您必须使用文件名,然后使用了解UTF-8(和归类)的排序算法。

更糟糕的解决方案

以下是不太吸引人的解决方案,更复杂,并且有更多警告。

在Windows上,PHP文件系统包装程序期望并返回ISO-8859-1字符串作为文件/目录名称。这给您两个选择:

  1. 在文件名中自由使用UTF-8,但要了解,非ASCII字符在PHP外部将 显示为错误 。非ASCII UTF-8字符将存储为多个 单个 ISO-8859-1字符。例如,

    ó
    将出现
    ó
    在Windows资源管理器中。

  2. 将文件/目录名称限制为ISO-8859-1中可以表示的字符。实际上,您将

    utf8_depre
    ]在文件系统功能中使用UTF-8字符串之前先传递它们,然后传递条目
    scandir
    使您
    utf8_enpre
    获得UTF-8中的原始文件名。

注意事项!

  • 如果传递给文件系统功能的任何 字节 与ISO-8859-1 中的无效Windows文件系统字符相匹配,则表示您不走运。
  • Windows 可能 在非英语语言环境中使用ISO-8859-1以外的编码。我想它通常是ISO-8859-#之一,但这意味着您需要使用
    mb_convert_encoding
    而不是
    utf8_depre


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394117.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号