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

一直想吧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页面手动输入的时候,就需要把含有中文的文件名进行转码,然后再查询

要不然查不到包含中文字符的文件哟。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值