php 上传文件名出现乱码

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

  

可能会有不少朋友碰到一些问题就是上传文件时如果是英文倒好原文名不会有问题,如果是中文可能就会出现乱码了,今天我来给大家总结一下导致乱码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编码。

乱码问题关键代码:

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

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

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

原文地址:https://www.cnblogs.com/ryanzheng/p/8283303.html

时间: 2024-10-14 00:43:54

php 上传文件名出现乱码的相关文章

中文乱码问题(使用Servlet3.0新特性实现文件上传——上传文件名中文乱码问题)

问题描述:就是文件传送过来的文件名等是乱码 解决方法:将传送的JSP页面(即含有表单的页面)的页面编码方式改为: <%@ page contentType="text/html; charset=GB2312" language="java" import="java.sql.*" errorPage="" %> <meta http-equiv="Content-Type" conten

centos6.3 tomcat上传文件名乱码

问题 如题,上传文件名问号 2. 定位 $locale LANG=en_US LC_CTYPE=zh_CN.UTF-8 3. 修复 所有用户生效,/etc/profile.d中加入setlang.sh: export LC_CTYPE=zh_CN.UTF-8 特定用户生效,~/.bash_profile中加入 export LC_CTYPE=zh_CN.UTF-8 centos6.3 tomcat上传文件名乱码,布布扣,bubuko.com

ueditor 百度编辑器 自定义图片上传路径和格式化上传文件名

今天项目中需要自定义图片上传的保存路径,并且不需要按照日期自动创建存储文件夹和文件名,我的ueditor版本是1.3.6.下面记录一下我配置成功的方法,如果有什么不对的地方欢迎指出,共同学习: 1:我在本地项目的根目录下新建一个文件夹,比如:upload. 2:打开ueditor/php/config.php,改成如下代码后保存: <?php return array( //图片上传允许的存储目录 /*'imageSavePath' => array ( 'upload1', 'upload2

input(file)样式修改及上传文件名显示

实现思路: a标签包裹input元素 设置a标签为上传按钮的样式,相对定位 设置input为透明,绝对定位,覆盖到a上面 效果:看到的按钮是a的样式,点击时实际是点击input元素.样式和功能都具备 html代码: <a href="javascript:;" class="file gradient">选择文件 <input type="file" > </a> CSS代码: .file { position

input[tyle=&quot;file&quot;]样式修改及上传文件名显示

默认的上传样式我们总觉得不太好看,根据需求总想改成和上下结构统一的风格…… 实现方法和思路: 1.在input元素外加a超链接标签 2.给a标签设置按钮样式 3.设置input[type='file']为透明,并定位,覆盖在a上面 html代码: <a class="input-file input-fileup" href="javascript:;"> + 选择文件<input size="100" type="f

rz上传文件出现乱码

使用crt上传文件时出现乱码且大小为0的文件,使用如下命令删除当前目录下的乱码文件 find . -maxdepth 1 -size 0 | xargs rm -rf 注:-maxdepth levels  在某个层次的目录中按照递减方法查找 -size 0           指定文件大小为0

drupal7 上传文件中文乱码

drupal7自带有file模块,可以上传文件. 但是存在问题:如果上传的文件名称是中文,存储在文件下面的文件名称是乱码的,解决办法如下:参考出处 修改两处代码,加上编码规则,就解决了中文乱码的问题 1 //搜索: 2 $file->filesize = filesize($file->uri); 3 //修改为: 4 $file->filesize = filesize(iconv("UTF-8","gb2312",$file->uri))

文件上传-文件名长度绕过白名单限制

??在实际渗透中,当我们发现有文件上传的地方时,我们会尽可能地尝试所有的办法进行webshell的上传,只要能上传webshell,就说明本次渗透至少成功了一般,后续就看获得的webshell的权限情况进行下一步的操作.对于文件上传漏洞的防护来说,主要分为以下两类:白名单限制和黑名单限制,对于黑名单的限制,我们只需要寻找一些较为偏僻的可执行后缀.大小写混写以及相关操作系统的特性(如windows文件名后缀的最后会自动过滤空格以及.等)来进行绕过:对于白名单的限制来说,一般是结合解析漏洞.代码函数

TP5.0中多图上传文件名重复问题

最近在做项目的时候出现了一个问题,这里记录一下: 问题: 使用TP5.0框架自带的文件上传方法后,发现多图上传可能会出现文件名重复的问题. 问题代码: 找到TP5框架上传文件命名方法,/thinkphp/library/think/File.php文件,buildSaveName方法(第394行): case 'date': $savename = date('Ymd') . DS . md5(microtime(true)); break; 解决办法: 文件命名方法可以修改一下: case '