1. 程式人生 > >php檔案上傳與下載字元編碼問題

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頁面手動輸入的時候,就需要把含有中文的檔名進行轉碼,然後再查詢

要不然查不到包含中文字元的檔案喲。