加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何列出包含特殊(挪威)字符的文件

发布时间:2020-12-13 22:33:56 所属栏目:PHP教程 来源:网络整理
导读:我正在做一个简单的(我认为)文件目录列表,如下所示: $files = scandir(DOCROOT.'files');foreach($files as $file){ echo ' li'.$file.PHP_EOL;} 问题是文件包含挪威字符(?,?,?),并且由于某种原因它们作为问号出现.为什么是这样? 在我回应它之前,我可以通
我正在做一个简单的(我认为)文件目录列表,如下所示:

$files = scandir(DOCROOT.'files');

foreach($files as $file)
{
    echo '  <li>'.$file.PHP_EOL;
}

问题是文件包含挪威字符(?,?,?),并且由于某种原因它们作为问号出现.为什么是这样?

在我回应它之前,我可以通过这样做来解决(?)它:

$file = mb_convert_encoding($file,'UTF-8','pass');

但是对我来说没什么意义有帮助,因为传递应该意味着没有执行字符编码转换,根据文档… * confused *

这是一个例子:http://random.geekality.net/files/index.php

解决方法

看起来文件名的编码在ISO Latin 1中,但默认情况下使用UTF-8解释页面.字符不是“问号”,而是Unicode替换字符( ).这意味着尝试将字节流解释为UTF-8的浏览器在UTF-8中遇到无效的字节,并在该点插入字符.将浏览器切换到ISO Latin 1并查看差异(查看>编码> …).

因此,如果您将页面指定为UTF-8编码,则需要将字符串从ISO Latin 1转换为UTF-8.使用mb_convert_encoding($file,’UTF-8′,’ISO-8859-1′)来执行此操作.

为什么它如果你指定$from from encoding作为pass我只能猜测它.你告诉mb_convert_encoding的是从pass转换为UTF-8.我想这使得mb_convert_encoding将mb_internal_encoding值作为$from编码,恰好是ISO Latin 1.我认为当用作$from参数时,它相当于’auto’.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读