在我的localhost机器上,我有两个文件:
IMG_9029_измен.размер.jpg
和słońce32 opalenier1.jpg
我希望通过 scandir()或readdir()获取主题的文件名,但无法获取精简文件名。它们是这样的:
IMG_9029_?????.??????.jpg and slonce32 opalenier.jpg
Window XP SP3, php5.2.12
如何获取IMG_9029_измен.размер.jpg and słońce32 opalenier1.jpg
等文件名?
答案 0 :(得分:8)
我假设你的php编码是utf-8。
$files = scandir($dirname);
foreach ($files as $file) {
$filename = iconv ( "windows-1251" , "UTF-8", $file );
echo $filename ."\n";
}
它应该适用于第一个文件,但我不知道哪个编码用于第二个文件。
主要问题是php 5不支持utf-8进行文件操作。它是内部ansi。所以它使用ansi api(只有8位编码)读取文件名。
答案 1 :(得分:1)
名称可能正确,但您需要将页面的编码设置为UTF-8。
将此添加到您网页的标题部分:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
然后将您的字符串转换为UTF8,以便正确显示特殊字符。
我做了一个功能,它被称为Encoding::toUTF8().
用法:
$utf8_string = Encoding::toUTF8($utf8_or_latin1_or_mixed_string);
下载: