【发布时间】:2016-06-21 09:34:27
【问题描述】:
为什么这会在一台服务器上返回 utf8 字符而不在另一台服务器上返回?一些文件名包含 unicode 字符,例如 æ ø 和 å..
在某些环境中会打印 utf8 字符,而在某些环境中会打印 iso 字符
header('content-type: text/plain');
$handle = opendir("./dir");
while($readdir = readdir($handle)){
echo "$readdir\n";
}
输出Content-Type:text/plain;charset=UTF-8
Retursvar 2 med fejl p� debiteringsniveau.xml
Retursvar 2 med fejl på debiteringsniveau.xml
两个系统上安装相同的语言环境 (UTF8)
dpkg-reconfigure locales
【问题讨论】:
-
正在使用什么底层文件系统?返回不同结果的服务器上使用的文件系统是否相同?
-
所有系统都是 Debian Jessie - 相同的发行版
-
好的,下一个问题 - 你如何设置 Content-Type。我假设您正在通过网络服务器运行并在浏览器中查看?内容类型是通过'header()'还是内联html设置的??
-
它在
header().. 页面被视为纯文本 -
您错误地循环了目录,而不是
while($readdir = readdir($handle)){ echo "$readdir\n"; }它应该是:while (false !== ($entry = readdir($handle))) { echo "$entry\n"; },如 readdir() 函数文档 here 中所述。这不会解决您当前的问题,它可能会阻止您的项目稍后发生。
标签: php directory filesystems