歡迎您光臨本站 註冊首頁

Tomcat在處理GET和POST請求時產生的亂碼問題

←手機掃碼閱讀     火星人 @ 2014-03-10 , reply:0
有個朋友寫JSP程序時,在Servlet中取請求參數時出現了亂碼,當然,這種亂碼問題再簡單不過了.由於在JSP中使用了GBK作用頁面的編碼,那麼提交的中文信息自然也會被按著GBK進行編碼,為%xx格式的GBK編碼.
要解決這個問題可以說是方法多多.最簡單的就是使用request.setCharacterEncoding方法設置編碼格式,如下面的代碼所示:

request.setCharacterEncoding("GBK");

在設置完編碼格式之後,就可以直接通過request.getParameter方法來獲得請求參數中的中文信息了.當然,為了方便,還可以在過濾器中加入上面的語句,這樣所有的Servlet都可以直接使用
request.getParameter方法來獲得請求參數中的中文信息了. 除了這兩種方法,還可以不使用request.setCharacterEncoding("GBK"),而使用下面的語言來轉換編碼:

String name = new String(request.getParameter("name").getBytes("ISO-8859-1"), "GBK");

但為了更快解決這個問題,我就直接告訴這位朋友使用了setCharacterEncoding方法來設置編碼.但是說來奇怪,還是出現亂碼,沒有任何解決問題的跡象. 最鬱悶的事就是使用了自己認為100%能解決問題的方法,而這種方法卻一點都沒起作用.
又讓朋友試了一種方法,說來奇怪,竟然好使了.當然,這也沒什麼可奇怪的,本來就應該好使,但奇就奇在setCharacterEncoding方法並沒有去掉,也就是說,同時使用了下面兩條語句,竟然得到了正常的中文請求參數值:


Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

request.setCharacterEncoding("GBK");
String name
= new String(request.getParameter(


[火星人 ] Tomcat在處理GET和POST請求時產生的亂碼問題已經有428次圍觀

http://coctec.com/docs/java/show-post-61781.html