职业第三者 2017-06-20 10:58:52 6741次浏览 0条回复 0 0 0

最近得到几个G的电子书,想做一个简单的阅读app。后端的接口就选择了yii,但是在用scandir读取文件夹返回数组的时候却报了如下错误

{
    "name": "Exception",
    "message": "Malformed UTF-8 characters, possibly incorrectly encoded.",
    "code": 5,
    "type": "yii\\base\\InvalidParamException",
    "file": "D:\\www\\appApi\\vendor\\yiisoft\\yii2\\helpers\\BaseJson.php",
    "line": 132,
    "stack-trace": [
        "#0 D:\\www\\appApi\\vendor\\yiisoft\\yii2\\helpers\\BaseJson.php(66): yii\\helpers\\BaseJson::handleJsonError(5)",
        "#1 D:\\www\\appApi\\vendor\\yiisoft\\yii2\\web\\JsonResponseFormatter.php(89): yii\\helpers\\BaseJson::encode(Array, 320)",
        "#2 D:\\www\\appApi\\vendor\\yiisoft\\yii2\\web\\JsonResponseFormatter.php(73): yii\\web\\JsonResponseFormatter->formatJson(Object(yii\\web\\Response))",
        "#3 D:\\www\\appApi\\vendor\\yiisoft\\yii2\\web\\Response.php(1007): yii\\web\\JsonResponseFormatter->format(Object(yii\\web\\Response))",
        "#4 D:\\www\\appApi\\vendor\\yiisoft\\yii2\\web\\Response.php(313): yii\\web\\Response->prepare()",
        "#5 D:\\www\\appApi\\vendor\\yiisoft\\yii2\\base\\Application.php(386): yii\\web\\Response->send()",
        "#6 D:\\www\\appApi\\frontend\\web\\index.php(17): yii\\base\\Application->run()",
        "#7 {main}"
    ]
}

代码:

public function mydir($dir)
{
    $files = array();

    $dir_list = scandir($dir);

    foreach($dir_list as $file)
    {
        if ( $file != ".." && $file != "." ) 
        {

            if ( is_dir($dir . "/" . $file) ) 
            {
                // 遍历当前文件夹

                $files[$file] = $dir . "/" . $file;

                // 无限极遍历文件夹
                //$files[$name] = $this->mydir($dir . "/" . $file);
            }
            else
            {

                $files[] =  $dir . "/" . $file;
            }
        }
    }

    return $files;
}

根据提示信息,就是编码问题,我们php是utf-8而window中文件编码却不是 所以解决方法:

1497927167(1).png

加入这句代码,转一下编码即可。 路径是拿到了,但是转换后你fopen('刚刚拿到的路径','r')会发现在这个文件下下面就算是有文件都会返回空,所以你在 fopen('刚刚拿到的路径','r') 之前应该把路径编码转成 //$name=iconv("utf-8","gb2312",$file);

Malformed UTF-8 characters, possibly incorrectly encoded.解决!!!!

    没有找到数据。
您需要登录后才可以回复。登录 | 立即注册