PHP用Unicode文件名列出目录中的所有文件

问题描述 投票:0回答:1

嗯,我的目录中有这些JSON文件,并且文件名包含Unicode字符。

"Spanish - Estoy leyendo este archivo.json"
"Malayalam - ഞാൻ ഈ ഫയൽ വായിക്കുന്നു.json"
"Greek - Διαβάζω αυτό το αρχείο.json"
"Japanese - このファイルを読んでいます.json"
"English - I am reading this file.json"

我正在尝试使用scandir函数列出以下代码段列出所有文件。

<?php
 $dir    = './';
 $files = scandir($dir);

 echo "<pre>";
 print_r($files);
 echo "</pre>";
?>

但是我没有得到实际的文件名,但如下所示。

Array
(
    [0] => .
    [1] => ..
    [2] => English - I am reading this file.json
    [3] => Greek - ??a�??? a?t? t? a??e??.json
    [4] => Japanese - ?????????????.json
    [5] => Malayalam - ??? ? ??? ????????????.json
    [6] => Spanish - Estoy leyendo este archivo.json
    [7] => index.php
)

实现相同的正确方法是什么?

php unicode directory unicode-string scandir
1个回答
0
投票

似乎Web服务器的标题中没有使用utf-8字符集(在浏览器的控制台中,双击检查标题->“网络”选项卡。)>

因此,即使php变量包含正确的文件名,浏览器也不希望使用utf-8字符并显示错误。尝试在php中显式设置字符集:

<?php
 header('Content-type: text/html; charset=utf-8');
 $dir    = './';
 $files = scandir($dir);

 echo "<pre>";
 print_r($files);
 echo "</pre>";
?>
    
© www.soinside.com 2019 - 2024. All rights reserved.