经过测试,避免踩坑
问题说明:
在win下:
在进行php文件上传的时候,保存文件为中文时,乱码。
linux下却正常
查阅资料发现:
由于系统是gb2312作为文件名编码,所以utf-8的php文件生成的中文名肯定乱码。(win)
所以进行编码转变
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . iconv("UTF-8","gb2312",$_FILES["file"]["name"]));
1.使用iconv函数可以解决上传中文文件名乱码的问题,实际上iconv能解决各种各样的由于编码不统一造成的乱码问题。
2.使用iconv函数请先检查源字符串的编码,除非你已经确定了源字符串的编码。
3.尽量保证所有的代码的编码一致,万不得已才使用iconv函数。
一种检查编码的方法:
$e=mb_detect_encoding($_FILES["file"]["name"], array("UTF-8","GBK","gb2312"));
echo $e;
//被返回: UTF-8,从而确认当前编码为utf-8,然后进行编码转换即可