问题描述

上传文件时,后端使用move_uploaded_file函数重命名文件到指定目录,文件名为中文时,保存的文件名乱码了。

原因

move_uploaded_file函数不支持UTF8,文件名包含中文,用utf8编码时,就会出现乱码。但它支持GBK或GB2312编码。所以可以使用iconv将字符串转为GBK或GB2312再执行。

解决方案

使用iconv将字符串转为GBK或GB2312再传给move_uploaded_file,示例如下

$newPathFileNameGBK = iconv("UTF-8", "GBK", $newPathFileName);

move_uploaded_file( $fileObj['tmp_name'], $newPathFileNameGBK );