如何解决php获取文件名乱码问题-PHP问题

资源魔 11 0

若何处理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猎取文件名乱码成绩的具体内容,更多请存眷资源魔其它相干文章!

标签: php php教程 php故障解决 php使用问题

抱歉,评论功能暂时关闭!