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语法速查表
Jan 02 PHP
PHP判断远程图片是否存在的几种方法
May 04 PHP
destoon各类调用汇总
Jun 20 PHP
php中常见的sql攻击正则表达式汇总
Nov 06 PHP
php 伪造ip以及url来路信息方法汇总
Nov 25 PHP
php常见的魔术方法详解
Dec 25 PHP
PHP构造二叉树算法示例
Jun 21 PHP
PHP实现将标点符号正则替换为空格的方法
Aug 09 PHP
PHP的PDO预定义常量讲解
Jan 24 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
Oct 01 PHP
Yii框架组件的事件机制原理与用法分析
Apr 07 PHP
PHP中strval()函数实例用法
Jun 07 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 gzip压缩输出的实现方法
2013/04/27 PHP
php源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
jQuery数组处理代码详解(含实例演示)
2012/02/03 Javascript
纯javascript代码实现计算器功能(三种方法)
2015/09/07 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
React简单介绍
2017/05/24 Javascript
记一次vue去除#问题处理经过小结
2019/01/24 Javascript
JS/jQuery实现简单的开关灯效果【案例】
2019/02/19 jQuery
在Express中提供静态文件的实现方法
2019/10/17 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
在Uni中使用Vue的EventBus总线机制操作
2020/07/31 Javascript
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
python自动化测试之连接几组测试包实例
2014/09/28 Python
Python中time模块与datetime模块在使用中的不同之处
2015/11/24 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
2017/11/15 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
对python:循环定义多个变量的实例详解
2019/01/20 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
python中的&amp;&amp;及||的实现示例
2019/08/07 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
美国最大网上鞋店:Zappos
2016/07/25 全球购物
俄罗斯香水和化妆品购物网站:Л’Этуаль
2018/05/10 全球购物
乌克兰电子和家用电器商店:Foxtrot
2019/07/23 全球购物
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
幼师自荐信范文
2013/10/06 职场文书
大学毕业自我鉴定范文
2014/02/03 职场文书
工厂搬迁方案
2014/05/11 职场文书
机械操作工岗位职责
2014/08/08 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
车贷收入证明范本
2014/09/14 职场文书
会议承办单位欢迎词
2015/09/30 职场文书
openstack中的rpc远程调用的方法
2021/07/09 Python
python实现Nao机器人的单目测距
2021/09/04 Python
15个值得收藏的JavaScript函数
2021/09/15 Javascript
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis
Python安装及建立虚拟环境的完整步骤
2022/06/25 Servers