Yii2 FileHelper::findFiles() - 非 ASCII 字符错误

Yii2 FileHelper::findFiles() - error with non-ASCII characters

我正在从 yii2-advanced-app 开发一个应用程序。

在控制器 (DocumentController) 中,我使用 FileHelper::findFiles().

读出目录中的文件

它工作正常,但如果我的文件名包含非 ASCII 字符(如德语变音符号 äöü),我只会在返回的文件路径中看到一个问号。

我该如何解决这个问题?我找不到合适的答案。

作为 Web 服务器,我在 Windows Server 2008 R2 Enterprise 上使用 IIS 7。

DocumentController.php

use yii\helpers\FileHelper;

$data = FileHelper::findFiles($folderPath,['except'=>['*.db']]);

var_dump($data);

结果为:

array(1) { [0]=> string(84) "C:\Websites\dev.point-s.de\space/space_attachments/10082\Aushang 201501 Gr�ndung.pdf" }

输出应该是用下面的代码完成的,但我认为问题出在文件的读取上。

Html::a($model['name'], ['document/download', 'file' => $model['name']])

好的,感谢@ineersa 的帮助,我在同事的帮助下得到了答案。

解决方案是使用PHP函数utf8_encode()

将findFiles()返回的文件名显式转换为UTF-8

http://php.net/manual/en/function.utf8-encode.php