【轉】終於解決了Apache亂碼問題


之前開放了一個空間,給網友提供電台節目音頻下載。由於多年節目的文件數量甚多,且分類沒有特定格式,圖省事,沒有制作網頁提供分類下載,而是直接利用Apache的目錄瀏覽功能,簡單直觀。

不過,所在的美國服務器默認Apache編碼設置為ISO-8859-1,使得中文文件名出現亂碼,每次瀏覽只能手動設置一下瀏覽器的編碼,設置為GB2312就可以正常顯示了。每刷新一次都要設置一次,好是麻煩。想解決這個問題,但是找了好多資料,都沒有解決到。一直就拖了將近2年了。辛苦了需要下載的網友了。

這幾天,突然有沖動,要把這個問題解決。

首先是給DH的customer service反應了(其實以前也反應過此問題),我在提問的同時,給了一個可能的解決方案給DH,讓他們協助修改http.conf,將"AddDefaultCharset ISO-8859-1"修改為"AddDefaultCharset GB2312"。迅速得到DH的回復,可惜答案並沒有解決我的問題。DH不允許修改系統配置,告訴我去修改htaccess文件,看看能否解決問題。又見htaccess文件……我修改了幾十次的配置文件,不過沒有一次可以成功解決這個亂碼問題。雖然如此,見DH熱心地附上了配置參考文檔(http://www.w3.org/International/questions/qa-htaccess-charset),還是挺感激的。

之前,利用htaccess,企圖解決亂碼問題,嘗試過以下多種指令:

AddDefaultCharset GB2312
DefaultLanguage zh-cn
AddDefaultCharset none
AddDefaultCharset Off
AddLanguage zh-cn .cn
AddCharset gb2312 .html
AddCharset gb2312 .htm

用W3的檢查器檢查(http://validator.w3.org/detailed.html),結果發現,對Apache的目錄瀏覽是不起作用的。只對上傳的文件(.html等等)起作用。

經過分析,應該是由於默認的目錄瀏覽方式是由Apache生成index文件的,因為只能在生成前設定編碼。

再仔細看了一下htaccess文件配置文檔,發現Apache Module mod_autoindex(http://httpd.apache.org/docs/2.2/mod/mod_autoindex.html#indexoptions),里面有FancyIndexing項目(其實之前都用過這個設置的IndexOptions NameWidth了),IndexOptions竟然也有一個關於編碼的設置,Charset=character-set,天啊!怎么之前沒有看到?!一看到這個選項,就感覺已經接近解決亂碼問題了。

立刻修改htaccess文件,加入

IndexOptions Charset=GB2312

重新打開網頁,成功!用W3的檢查器檢查,也是顯示編碼為GB2312!終於解決了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM