若何处理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教程
以上就是若何处理php猎取文件名乱码成绩的具体内容,更多请存眷资源魔其它相干文章!
抱歉,评论功能暂时关闭!