ISO-8859-1編碼導致Apache亂碼的解決辦法
來源:程序員人生 發布時間:2014-03-27 18:24:17 閱讀次數:4510次
建站學院文檔 所在的美國服務器默認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!終于解決了!
一句簡單的命令,為什么之前一直都沒有看到?太不小心了!
Apache目錄瀏覽亂碼,Apache亂碼,Apache編碼修改,htaccess編碼修改,ISO-8859-1,GB2312,UTF-8,IndexOptions Charset(加上幾句關鍵字,好讓其他遇到此問題的網友能通過搜索引擎找到此文章。^_^)
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈