PHP处理后UTF8不正确显示


UTF8 not displaying proper after PHP processing

我有一个名为" email "的文件夹(不管我使用哪个字符或多少个字符),在使用php将其拉起后显示错误的字符或乱码文本。

<?php
mb_internal_encoding('utf-8');
if ($handle = opendir('.')) {
while (false !== ($file = readdir($handle))) {
    if ($file != "." && $file != "..") {
        echo $file;
    }
}
closedir($handle);
}
echo "同";
?>

的回报:

Folder1index.php��同

它显示2个'字符',如果它没有正确编码为UTF-8。由于该字符的回显,浏览器正在以UTF-8格式处理该页面。

这是一个php/code问题或其他东西阻止它正确显示?(IIS)

问题不在于脚本或网站的UTF-8编码,而在于文件系统中文件名的编码。

您首先需要了解在文件系统级别上使用哪种编码。如果你知道的话,你可以将已编码的文件名重新编码为UTF-8(例如iconv;mb_convert_encoding)。它们会在你的网站上显示得很好。

你写你正在使用IIS,所以我假设你在windows上运行。请参阅相关答案和/或相关问题 NTFS中的文件名以什么编码存储?

这是一个关于在php中处理utf-8文件名的优秀线程-如何在php中使用utf-8字符串使用文件系统函数?

在sort中,你需要对文件名调用urlencode/urldecode。然而,它建议你使用drupal的音译模块-不同的服务器上不同的字符集?