gpt4 book ai didi

php - 如何列出具有特殊(挪威语)字符的文件

转载 作者:可可西里 更新时间:2023-10-31 23:42:56 26 4
gpt4 key购买 nike

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

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

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

问题是文件包含挪威字符 (æ,ø,å),并且出于某种原因它们显示为问号。这是为什么?

我显然可以在回显之前通过这样做来修复(?)它:

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

但这对我来说意义不大,因为根据文档,通过应该意味着不执行字符编码转换...*confused*/p>


这是一个例子: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 编码指定为 pass 为什么它会起作用我只能猜测。您告诉 mb_convert_encoding 的是将 pass 转换为 UTF-8。我想这使得 mb_convert_encodingmb_internal_encoding 值作为 $from 编码,恰好是 ISO Latin 1。我想它等同于 'auto' 当用作 $from 参数时。

关于php - 如何列出具有特殊(挪威语)字符的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9506383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com