• 技术文章 >后端开发 >PHP问题

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

    WJWJ2020-06-10 17:05:24原创1339

    如何解决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中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php
    上一篇:php怎么设置session过期时间 下一篇:如何解决php获取不到form数据
    大前端线上培训班

    相关文章推荐

    • 如何解决php页面超时• php如何设置内存大小• 如何设置php上传文件大小的限制• php如何设置允许跨域请求• php如何设置字符编码• php怎么设置session过期时间

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网