php - 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。
解决方案
看起来文件名随后使用 UTF-8 编码了两次 - 您在服务器/本地 php 上使用什么编码设置?
推荐阅读
- java - 如何在设置 Seekbar 的最小值和最大值而不是传递 int 时传递 DP 值?
- chaos - 在本地启动 chaosblade-box 时出错
- cgal - 基于CGAL的电路板布线算法
- c - 如何检查一个进程是否已经完成?
- javascript - 有没有办法使用 chrome 扩展从网站中删除某个元素?
- angular - 具有 ControlValueAccessor 的递归 Angular 表单运行速度极慢
- c# - 使用 NTwain 从进纸器扫描文档
- python - 时间复杂度——无法确定是 logn 还是 sqrt n
- spring-boot - 如何使用Springboot在mysql中将1映射到M函数
- java - 当我尝试从 admob 显示奖励视频广告时应用程序崩溃