分享java帶來的快樂

          我喜歡java新東西

          關于Apache的AddDefaultCharset的問題

          上周飛龍新版上線的時候,出現了一個問題由于原來的頁面是用的GBK編碼的。新版的面頁使用了utf-8編碼的。晚上部署的時候發現utf-8編碼的全部都成亂碼了。這個亂碼是因為瀏覽器用gbk解析utf-8的網頁的。手動選擇一下用utf-8編碼就正常的了。剛開始還以為是utf-8頁面的問題。看html源碼。里面有utf-8的頭申明。看jsp里面也有的。為什么Apache就是不用utf-8發送給瀏覽器呢?
          后來找到httpd.conf.發面里面的AddDefaultCharset設置的是

          AddDefaultCharset=GBK

          沒辦法先修改成UTF-8試試

          AddDefaultCharset=UTF-8

          這樣的話utf-8的頁面好了。可是gbk的又不行了。真是怪了。后來發現把這個設置成off就可以了。

          AddDefaultCharset=off

          一查Apache的參考手冊,原來是這樣的。

          AddDefaultCharset 指令

          說明 當應答內容是text/plaintext/html時,在HTTP應答頭中加入的默認字符集
          語法 AddDefaultCharset On|Off|charset
          默認值 AddDefaultCharset Off
          作用域 server config, virtual host, directory, .htaccess
          覆蓋項 FileInfo
          狀態 核心(C)
          模塊 core

          當且僅當應答內容是text/plaintext/html時,此指令將會在HTTP應答頭中加入的默認字符集。理論上這將覆蓋在文檔體中通過<meta>標簽指定的字符集,但是實際的行為通常取決于用戶瀏覽器的設置。AddDefaultCharset Off 將會禁用此功能。AddDefaultCharset On 將啟用Apache內部的默認字符集iso-8859-1 。您也可以指定使用在IANA注冊過的字符集名字中的另外一個charset 。比如說:

          AddDefaultCharset utf-8

          AddDefaultCharset只 應當在如下情況下使用:所有文本資源都使用同一種確定的字符集,且分別標記他們的字符集非常麻煩。一個這樣的例子是向包含動態內容的資源中添加字符集參數 (比如先前遺留的CGI腳本),這樣可能會因為在輸出中包含用戶提供的數據而導致跨站點腳本攻擊。但是請注意:更好的解決辦法是修改或刪除這些腳本,因為 設置了默認的字符集以后將會使得瀏覽器的字符集自動探測功能失效。

          原來這個是給那種沒有申明編碼的頁面用的。如果你的站點只有一種編碼就可以使用這個指令,如果有兩種就不能用了。那就是還記得將所有的頁面都加上好合適的編碼頭申明。

          posted on 2011-02-10 10:11 強強 閱讀(2008) 評論(0)  編輯  收藏 所屬分類: web技巧

          主站蜘蛛池模板: 安岳县| 广灵县| 资中县| 津南区| 邯郸市| 资阳市| 昌邑市| 白玉县| 芮城县| 柘荣县| 耿马| 扎鲁特旗| 西林县| 盐源县| 信宜市| 宜良县| 邵东县| 蓬莱市| 双城市| 辽源市| 万安县| 湾仔区| 罗山县| 沈阳市| 贵南县| 永定县| 普洱| 连江县| 阿图什市| 兰溪市| 广南县| 奉贤区| 凤庆县| 霍林郭勒市| 宁城县| 曲阜市| 通州市| 大竹县| 扎兰屯市| 蓝山县| 玉山县|