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’. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |