微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我正在做一个简单的(我认为)文件目录列表,如下所示:

$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’.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐