PHP保存文件,中文乱码的解决方法

经过测试,避免踩坑

问题说明:
在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,然后进行编码转换即可
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值