php上传文件中文文件名乱码的解决方法


Posted in PHP onNovember 01, 2013

可能会有不少朋友碰到一些问题就是上传文件时如果是英文倒好原文名不会有问题,如果是中文可能就会出现乱码了,今天我来给大家总结一下导致乱码php上传文件中文文件名乱码的原因与解决办法吧。

这几天在windows下安装了XAMPP,准备初步学习一下php的相关内容。这几天接触到了php上传文件,但是出现了一个郁闷问题,我准备上传一个excel文件,但是如果文件名是中文名就会报错。

一来二去很是郁闷,后来仔细想了想应该是文件编码的问题,我写的php文件使用的是UTF-8编码,如果没有猜错APACHE处理用的应该是GBK(当然现在我无法确定,希望高手给与指教)。想明白了这个问题,就去查找相关的教程了,索性找到了iconv这个函数。

函数原型:string iconv ( string in_charset, string out_charset, string str )

使用例子:$content = iconv("GBK", "UTF-8", $content);

这个例子的作用就是将$content从GBK转换成UTF-8编码。

乱码问题关键代码:

$name=iconv("UTF-8","gb2312", $name);
move_uploaded_file($tmpname, $this->final_file_path); 
$name=iconv("gb2312","UTF-8", $name);

除了这样来解决上传文件中文乱码问题,我们还可以把上传文件重新命名即可。

$sFileName = "sda.php";
$sOriginalFileName = $sFileName;
$sExtension = s str($sFileName, (strrpos($sFileName, '.') + 1));//找到扩展名
$sExtension = strtolower($sExtension);
$sFileName = date("YmdHis").rand(100, 200).".".$sExtension; //这样就是我们的新文件名了,全数字的不会有乱码了哦。

以下是一些补充:

php上传中文文件名乱码解决方案

 $filepath="upload/";
 $name=$filepath.$_FILES["upfile"]["name"];
 while(file_exists($name)){
   $temp=explode(".",$name);//分割字符串
    $name=$temp[0]."0".".".$temp[1];//主文件名后面加0
 }
//iconv()函数是关键
  if(move_uploaded_file($_FILES["upfile"]["tmp_name"],iconv("UTF-8","gb2312",$name))){//处理...}

我的PHP编码是UTF-8,其中原因可能是因为操作系统是GBK的原因!

注意:我的服务器是windows xp、apache,估计xp字符集是gbk。因为我的php代码保存为utf-8格式的,在给文件名命名时会出现乱码的情况,所以可以用iconv()函数将原本的utf-8格式的文件名转换为gbk格式的。

php utf8编码 上传中文文件名出现乱码的解决方法

想必很多朋友在进行utf8编码的php开发上传功能的时候,都会遇到这样的一个问题,就是上传中文文件名的文件时,文件名会变成乱码,我们可以用iconv函数对文件名进行重新编码就解决问题了。

<?php
header("Content-Type:text/html;charset=utf-8");
$submit = $_POST['submit'];
if(isset($submit) && trim($submit) != ''){
$file = $_FILES['file'];
if(isset($file['tmp_name'])){
     $name = iconv('utf-8','gb2312',$file['name']); //利用Iconv函数对文件名进行重新编码
     if(move_uploaded_file($file['tmp_name'],$name)){
    echo '文件上传成功!';
    echo '图片信息:';
    print_r($file);
   }
}
}
?>
PHP 相关文章推荐
PHP 检查扩展库或函数是否可用的代码
Apr 06 PHP
PHP JS Ip地址及域名格式检测代码
Sep 27 PHP
浅析ThinkPHP中execute和query方法的区别
Jun 13 PHP
php过滤表单提交的html等危险代码
Nov 03 PHP
PHP错误机制知识汇总
Mar 24 PHP
PHP实现的登录,注册及密码修改功能分析
Nov 25 PHP
关于PHP通用返回值设置方法
Mar 31 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
Sep 30 PHP
PHP耦合设计模式实例分析
Aug 08 PHP
PHP操作Redis数据库常用方法示例
Aug 25 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
May 08 PHP
Laravel框架学习笔记之批量更新数据功能
May 30 PHP
PHP防止跨域提交表单
Nov 01 #PHP
PHP查询网站的PR值
Oct 30 #PHP
PHP禁止个别IP访问网站
Oct 30 #PHP
php cURL和Rolling cURL并发方式比较
Oct 30 #PHP
使用PHP Socket写的POP3类
Oct 30 #PHP
腾讯QQ微博API接口获取微博内容
Oct 30 #PHP
FireFox浏览器使用Javascript上传大文件
Oct 30 #PHP
You might like
php+MySQL实现登录时验证登录名和密码是否正确
2016/05/10 PHP
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
javascript AutoScroller 函数类
2009/05/29 Javascript
实用的Jquery选项卡TAB示例代码
2013/08/28 Javascript
动态加载js的方法汇总
2015/02/13 Javascript
jQuery UI设置固定日期选择特效代码分享
2015/08/27 Javascript
好好了解一下Cookie(强烈推荐)
2016/06/14 Javascript
javascript运算符语法全面概述
2016/07/14 Javascript
webpack手动配置React开发环境的步骤
2018/07/02 Javascript
JS实现字符串翻转的方法分析
2018/08/31 Javascript
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
关于layui导航栏不展示下拉列表的解决方法
2019/09/25 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
[03:01]DOTA2英雄基础教程 露娜
2014/01/07 DOTA
用Python编写一个简单的FUSE文件系统的教程
2015/04/02 Python
Python遍历文件夹和读写文件的实现方法
2017/05/10 Python
Python常见异常分类与处理方法
2017/06/04 Python
python实现mysql的读写分离及负载均衡
2018/02/04 Python
python高阶爬虫实战分析
2018/07/29 Python
Python版中国省市经纬度
2020/02/11 Python
Python调用C/C++的方法解析
2020/08/05 Python
Python configparser模块应用过程解析
2020/08/14 Python
HTML5 3D衣服摇摆动画特效
2016/03/17 HTML / CSS
canvas实现图片镜像翻转的2种方式
2020/07/22 HTML / CSS
巴西最大的珠宝连锁店:Vivara
2019/04/18 全球购物
某公司面试题
2012/03/05 面试题
电子信息科学专业自荐信
2014/01/30 职场文书
弘扬职业精神演讲稿
2014/03/20 职场文书
保密协议书范本
2014/04/22 职场文书
2014年学前班工作总结
2014/12/08 职场文书
优秀共产党员事迹材料
2014/12/18 职场文书
外国人来华邀请函
2015/01/31 职场文书
2015年全国爱眼日活动小结
2015/02/27 职场文书
2015年数学教研工作总结
2015/07/22 职场文书
开网店计划分析
2019/07/30 职场文书
python工具dtreeviz决策树可视化和模型可解释性
2022/03/03 Python