您的位置:首页 > 编程语言 > PHP开发

php文件上传与下载字符编码问题

2016-12-06 11:49 162 查看
一直想吧php文件上传下载字符编码问题总结一下,但是一拖再拖久而久之不晓得拖了多久,今天终于下定决心开始动手。

首先,php文件一般用的utf-8编码,而windows下的字符编码一般都为gbk,所以在php在读取本地的中文文件时就会出现乱码问题。如下图所示



解决办法:

在文件输出的时候使用iconv函数进行转码代码如下:

<?php

$dir_str_path = 'D:/tnwamp/Apache24/htdocs/1205/pic/';

if (is_dir($dir_str_path)) {

    if ($dir_handle = opendir($dir_str_path)) {

        while ($filename = readdir($dir_handle)) {

            if (is_dir($dir_str_path.$filename)) {

                echo '<br>===目录'.iconv('gb2312','utf-8',$filename);

            }else{

                echo "<br>===文件".iconv('gb2312','utf-8',$filename);

            }

        }

        //echo '添加水印成功';

    }else{

        echo '文件打开失败';

    }

} else {

    echo '文件路径有误';

}

因为我们的$filename是从句柄中得到的,字符编码为gbk,在浏览器输出后就会得到乱码,所以输出前更改一下编码就好了。

但是有一点需要注意的是,如果使用is_dir或者is_file函数查询时候,如果查询地址是在php页面手动输入的时候,就需要把含有中文的文件名进行转码,然后再查询

要不然查不到包含中文字符的文件哟。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: