//

Information for details

如何解决php 文件中文文件名乱码?

很多初学者在进行utf8编码的php开发上传功能的时候,都会遇到这样的一个问题,就是上传是中文文件名的文件时,文件名会变成乱码,如果解决呢?其实我们只要用iconv函数就可以解决了。
php文件使用的编码是UTF-8,APACHE处理用的应该是GBK。了解这一点后,就去查找相关的教程了,索性找到了iconv这个函数。
函数原型:string iconv ( string in_charset, string out_charset, string str )
使用例子:$str= iconv(“GBK”, “UTF-8”, $str);
这个例子的作用就是将字符串$str的编码从GBK转换成UTF-8。
复制代码 代码如下:
$name=iconv("UTF-8","gb2312", $name);
除了这样来解决上传文件中文乱码问题,我们还可以把上传文件重新命名即可。

复制代码 代码如下:
$sFileName = “runchance.php”;
$sOriginalFileName = $sFileName;
$sExtension = s str($sFileName, (strrpos($sFileName, ‘.’) + 1));//找到扩展名
$sExtension = strtolower($sExtension);
$sFileName = date(“YmdHis”).rand(100, 200).”.”.$sExtension; //这样就是我们的新文件名了,全数字的不会有乱码了哦。
以下是一些补充:
php上传中文文件名乱码解决方案
复制代码 代码如下:
$filepath=”fileuploads/”;
$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);
   }
}
}


云南然成科技有限公司是云南一家本土的集网站建设、app开发、微信公众平台开发、系统定制开发的高端互联网公司!

  • 滇公网安备 53010202001388号