看板 PHP 關於我們 聯絡資訊
問題的癥結在於IE沒辦法自己判斷你的檔名是什麼編碼 所以他會用預設的編碼去解釋你的檔名 Fx自己會辨識就不會有這種問題 CA4Z0ZZK這個應該是IE cache的檔名 作法有兩個 1.把檔名都變成預設編碼 $fn=iconv('utf-8','big5',$fn); 2.把檔名urlencode 因為這只有IE適用 Fx的會直接把encode出來的東西(%XX)直接顯示出來 所以要判斷瀏覽器是IE的時候才 $fn=urlencode($fn); p.s 這裡預設的編碼 好像伺服器的設定也可以決定 不過這方面我就沒試過了 ※ 引述《gmoz (Gmoz)》之銘言: : $query = "SELECT * FROM uploads WHERE upload_id = {$_GET['uid']}"; : $result = mysql_query($query); : mysql_query("SET CHARACTER SET 'utf8'"); //這行試過了ˊˋ : $row=mysql_fetch_array($result); : $fn=$row['file_name']; : $extension = explode('.' , $fn); : $the_file='../uploads/'.$_GET['uid'].'.'.$extension[1]; : header("Content-disposition:attachment;filename=$fn"); : readfile ($the_file); : 小弟要做的是個讓人上傳東西,然後可下載的網頁 : 使用view_files.php傳出uid連到download_fils.php來執行如上的PHP碼 : 英文檔名沒問題,可正常顯示檔名並且下載 : 遇到中文檔名時 (把$fn使用echo印出來是正確的原檔名) : 但是放到header之後檔名卻出現CA4Z0ZZK.等等的英文字和數字(而且每次點都不一樣) : 由於屆時上傳檔案的可能會包含些公家機關, : 因此不能上傳中文檔名可能會造成不便 : 希望各位前輩能幫忙解答,小弟感激不敬 : appsev 2.5.5 : php5 : phpMyAdmin 2.6.4-pl4 : MySQL 版本 5.0.16-nt -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.193.33.6
gmoz:我最後是無意間把mysql_query("SET CHARACTER SET 'UTF8'") 07/22 13:04
gmoz:改成mysql_query("SET CHARACTER SET 'big5'")就解決了 q_q 07/22 13:04
gmoz:還有作法1不行 原因好像是參數傳入時就是中文了(? 07/22 13:05
mouse26:... 07/22 15:29
knockout:下載檔案沒人在做中文檔名下載的 = =" 07/23 12:18
knockout:額外還要判斷OS 是WIN的話要送BIG5 MAC送utf-8 07/23 12:18
knockout:何必咧~~ 隨機取個英文ID自已送不就好了 ... 07/23 12:19
gmoz:我存在主機中檔名是英文的 下載時會自動更名為原來的檔名 07/23 13:04
gmoz:K大 我不懂你的第三行 ._. 07/23 13:07
gmoz:說錯 主機中檔名是uid的值 07/23 13:08