重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
如何解决php获取文件名乱码问题?
叙永网站建设公司成都创新互联公司,叙永网站设计制作,有大型网站制作公司丰富经验。已为叙永数千家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的叙永做网站的公司定做!想必很多朋友在进行utf8编码的php开发上传功能的时候,都会遇到这样的一个问题,就是上传中文文件名的文件时,文件名会变成乱码,其实我们可以用iconv函数对文件名进行重新编码就解决问题了
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);
除了这样来解决上传文件中文乱码问题,我们还可以把上传文件重新命名即可。
例
复制代码 代码如下:
$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函数对文件名进行重新编码就解决问题了。
复制代码 代码如下:
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获取文件名乱码问题的详细内容,更多请关注创新互联成都网站设计公司其它相关文章!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。