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短网址的生成代码(仿微博短网址)
May 07 PHP
PHP框架Swoole定时器Timer特性分析
Aug 19 PHP
PHP实现Soap通讯的方法
Nov 03 PHP
图文介绍PHP添加Redis模块及连接
Jul 28 PHP
php精确的统计在线人数的方法
Oct 21 PHP
详解PHP对数组的定义以及数组的创建方法
Nov 27 PHP
php用户登录之cookie信息安全分析
May 13 PHP
PHP中Cookie的使用详解(简单易懂)
Apr 28 PHP
Laravel框架路由管理简单示例
May 07 PHP
laravel实现上传图片并在页面显示的例子
Oct 14 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
May 02 PHP
PHP7 错误处理机制修改
Mar 09 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
Smarty使用自定义资源的方法
2015/08/08 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
使用js修改客户端注册表的方法
2013/08/09 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
JS常用函数使用指南
2014/11/23 Javascript
Javascript实现飞动广告效果的方法
2015/05/25 Javascript
Javascript实现快速排序(Quicksort)的算法详解
2015/09/06 Javascript
第九章之路径分页标签与徽章组件
2016/04/25 Javascript
js实现密码强度检验
2017/01/15 Javascript
Vue路由跳转问题记录详解
2017/06/15 Javascript
JavaScript中附件预览功能实现详解(推荐)
2017/08/15 Javascript
基于three.js编写的一个项目类示例代码
2018/01/05 Javascript
webstrom Debug 调试vue项目的方法步骤
2018/07/17 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
2018/09/03 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
python解析xml模块封装代码
2014/02/07 Python
以911新闻为例演示Python实现数据可视化的教程
2015/04/23 Python
Python之Scrapy爬虫框架安装及简单使用详解
2017/12/22 Python
Python基于辗转相除法求解最大公约数的方法示例
2018/04/04 Python
pymongo insert_many 批量插入的实例
2020/12/05 Python
PyCharm 解决找不到新打开项目的窗口问题
2021/01/15 Python
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
简历中的自我评价范文
2014/02/05 职场文书
建筑投标担保书
2014/05/20 职场文书
莫言诺贝尔获奖演讲稿
2014/05/21 职场文书
信息管理专业自荐书
2014/06/05 职场文书
企业领导对照检查材料
2014/08/20 职场文书
2014年教师工作总结
2014/11/10 职场文书
怎样写离婚协议书
2015/01/26 职场文书
工作能力自我评价2015
2015/03/05 职场文书
人代会简报
2015/07/21 职场文书
化工生产实习心得体会
2016/01/22 职场文书
pytorch Dropout过拟合的操作
2021/05/27 Python
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS