utf8在php语言中怎么用,如何在PHP中使用UTF-8字符串使用文件系统函数?

只需

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

警告(也适用于以下解决方案):

>在url编码后,文件名必须少于255个字符(可能是字节)。

>对于许多字符,UTF-8具有multiple representations(使用组合字符)。如果您不规范化您的UTF-8,您可能无法使用glob搜索或重新打开单个文件。

>你不能依靠scandir或类似的函数进行alpha排序。您必须对文件名进行urldecode,然后使用识别UTF-8(和归类)的排序算法。

更糟糕的解决方案

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

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

>在您的文件名中自由使用UTF-8,但应理解,非ASCII字符在PHP外部将显示不正确。非ASCII UTF-8字符将存储为多个单独的ISO-8859-1字符。例如。 ó将在Windows资源管理器中显示为ó。

>将您的文件/目录名称限制为characters representable in ISO-8859-1.实际上,在将文件系统函数中使用它们之前,您将传递您的UTF-8字符串通过utf8_decode,并传递条目scandir给您通过utf8_encode得到原始文件名为UTF-8。

注意事项!

>如果传递到文件系统函数的任何字节与ISO-8859-1中的invalid Windows filesystem character匹配,则表示运气不好。

> Windows可以在非英语区域设置中使用ISO-8859-1之外的编码。我猜想它通常是ISO-8859-#之一,但这意味着你需要使用mb_convert_encoding而不是utf8_decode。

这个噩梦是为什么你应该只是transliterate创建文件名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值