Yii 中打开文件读取数据返回一个 JSON 数据时报“Malformed UTF-8 characters, possibly incorrectly encoded.”错误的解决方法 [ 技术分享 ]
最近得到几个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中文件编码却不是 所以解决方法:
加入这句代码,转一下编码即可。
路径是拿到了,但是转换后你fopen('刚刚拿到的路径','r')会发现在这个文件下下面就算是有文件都会返回空,所以你在 fopen('刚刚拿到的路径','r')
之前应该把路径编码转成 //$name=iconv("utf-8","gb2312",$file);
Malformed UTF-8 characters, possibly incorrectly encoded.
解决!!!!
共 0 条回复
没有找到数据。
职业第三者 广州
注册时间:2017-05-11
最后登录:2018-07-09
在线时长:7小时22分
最后登录:2018-07-09
在线时长:7小时22分
- 粉丝3
- 金钱125
- 威望30
- 积分495