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