[備忘]IE6不徹底支持UTF-8致使漢字亂碼的BUG~

環境:Windows XP SP3 簡體中文版、IE六、Tomcat 6.0.3二、JDK 1.6.0.23
配置:JSP頁面charset=UTF-8" pageEncoding="UTF-8",tomcat的Server.xml中配置URIEncoding="utf-8",Struts2的struts.xml中也配置了編碼爲UTF-8。html

------------------------------------分隔線------------------------------------java

在IE6瀏覽器上使用post方式提交帶中文的內容時不會出錯!可是在使用get方式發送以UTF-8編碼的帶參數(參數值中有漢字)的URL時,就可能會出現亂碼!瀏覽器

參見:
IE6 發送奇數個漢字出現的BUG 亂碼
http://hi.baidu.com/miway/blog/item/92ce17edde4956e5cf1b3e18.htmltomcat

URL 傳參 IE6 UTF-8
http://yin123.blog.51cto.com/882581/414234post

------------------------------------分隔線------------------------------------測試

沒辦法,公司的電腦上都還在使用垃圾的IE6,沒辦法,只能想辦法來解決它咯--!
其實這些解決辦法都不是很好,最好的辦法就是不用IE6,升級到IE7及以上版本,而其它種類的瀏覽器如Firefox、Chrome、Safria等等壓根都沒這個問題!!!編碼

個人解決方案:
一些帶中文參數的URL用java.net.URLEncoder的encode方法來解決,如:url

&formType=<%=java.net.URLEncoder.encode("測試數據", "UTF-8")%>" target="demoFrame">測試部.net

另外一些帶中文的我在JSP頁面的JavaScript部分使用這樣的URL:code

url: systemUrl + "/data_model/data-model!getJsonData?workshop="
            + encodeURIComponent('<s:property value="workshop" escapeHtml="false"/>')
            + "&formType=" + encodeURIComponent('<s:property value="formType" escapeHtml="false"/>'),
還有一些我在URL連接的參數後面加上「\r」(不含引號,這個是回車的意思,被瀏覽器執行了也是不可見字符,因此IE6截斷它也沒什麼關係!)來處理:
<%-- 在workshop參數的值後面加上「\r」,保證參數值不被IE6截斷掉最後一個字符 ${dataModel.workshop}--%>
    <a href="${ctx}/data_model/data-model?workshop=${dataModel.workshop}\r&formType=${dataModel.reportType}\r">返回數據列表</a>
相關文章
相關標籤/搜索