中文参数乱码问题
? ? 中文參數總是會引起一些亂碼問題,煩不勝煩。js默認的UTF-8編碼,java項目使用的是gbk編碼,使用ajax請求獲取到數據然后作為參數請求下一個頁面時就會發生亂碼
? ? 其實java項目所使用的應用服務器(tomcat、resin等)本身就會根據項目編碼格式默認的對參數進行一次加密和解密。
? ? 后來摸索了一下有兩個解決方案:
? ? 1)、對請求的參數值進行兩次URLEncode()
? ? 原理:第一次進行encode后會將字符串轉換為ascii字符編碼,這個時候漢字就不是多字節字符編碼了,這個時候再對其進行第二次編碼,因此,當第一 次解析時不管使用何種解析方式得到的都是第一次編碼所得到的asscii字符編碼,然后再使用js默認的UTF-8格式解碼就可以得到正確的字符了。
? ? 2)、設置請求的編碼格式,request.setCharaterEncoding("XXX")
? ? 原理:這樣服務器在自動解碼時就會按照請求中設置的編碼格式進行解碼,只要設置解碼的格式與編碼時一致即可得到正確編碼的值。
?
2012/10/16
最近又遇到一個亂碼問題,匯總到這里
jsp頁面,java全部使用的UTF-8編碼,后臺使用了一個列表工具插件,該插件實現了通過數據庫配置一些參數自動生成列表功能。由于頁面使用form表單以get方式提交,表單總的中文默認按照頁面編碼格式進行編碼,而該插件接收參數時解碼方式使用的是gbk編碼(在resin下是gbk而在jetty下又是utf-8了),至于具體什么原因沒搞清楚,這時解碼方式與頁面編碼方式不一致了,因此在form表單中加入accept-charset="gbk"屬性即可指定請求編碼時使用gbk編碼。
轉載于:https://www.cnblogs.com/gewei/archive/2012/02/07/2341577.html
總結
- 上一篇: 九、oracle 事务
- 下一篇: 页面回传与js调用服务器端事件(转)