首页 > 解决方案 > PHP 读取和渲染文件名(带有特殊字符)以供下载

问题描述

我必须呈现一个文件列表,并带有指向它们的链接。我写的是:

$path = "pdf/".$lang."/*";
$fileList = glob($path);

echo "<ul>";
foreach($fileList as $filename){
    $splitted = explode("/", $filename);
    echo '<li><a href="'.$filename.'">'.end($splitted).'</a>'; 
}
echo "</ul>";

如果文件名中没有特殊字符,它可以工作。如果有,则呈现�。

我更改了以下代码:

$path = "pdf/".$lang."/";
$fileList = glob($path."*");

echo "<ul>";
foreach($fileList as $entry){
    $splitted = explode("/", $entry);
    $filename = iconv('WINDOWS-1252', 'UTF-8', end($splitted));
    echo '<li><a href="'.$path.$filename.'" target="_blank">'.$filename.'</a>'; 
}
echo "</ul>";

此解决方案仅适用于本地主机。一旦我发布它,特殊字符就不会正确呈现。而不是ä它呈现ä. 我该如何解决?

编辑:
这不是这个问题的重复。正如我在上面所写的,我得到了 ä not �。

本地主机和服务器在 Windows 上运行。本地主机上的 PHP 版本是 5.6.35。服务器在 7.1。

标签: phputf-8special-characters

解决方案


看起来文件名随后使用 UTF-8 编码了两次 - 您在服务器/本地 php 上使用什么编码设置?


推荐阅读