我在浏览器中显示带有希腊文件名(例如“φωτογραφία.jpg”)的图像时遇到问题。使用这个脚本,我发现了我需要与 iconv() 一起使用的 2 种编码,这样我就可以让文件名在浏览器中正确显示。图像本身虽然无法渲染。
<?
$file = 'φωτογραφία.jpg';
$encodings = array("UTF-8", "ASCII", "Windows-1253", "ISO-8859-1", "UTF-16");
$iconv = "";
foreach ($encodings as $i) {
foreach ($encodings as $j) {
if($j!==$i) $iconv .= "<br /> $i -> $j: ".iconv($i, $j, $file);
}
}
echo $iconv;
?>
此处的工作链接,从 UTF-8 -> Windows-1253 转换时返回正确的文件名。
环境是 Apache/2.2.22 (Unix) 上的 PHP 5.2.17,文件已从 Windows 机器上载。目前,我只测试了 2-3 个图像,将它们硬编码到一个测试 PHP 文件中。如果从数据库查询中提取文件名,您认为会有所不同吗?