URL傳參數,服務器端接收出現中文亂碼

在jsp頁面中,設置頁面的存儲編碼和頁面輸出時的編碼:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>

這樣,就統一了編碼爲utf-8。

這種方式在post提交表單中含有中文時沒有問題。但是在用get提交時,如果含有中文,就會出現類似於“? ? ?”的亂碼問題。爲什麼會這樣呢,造成這種現象的原因是Tomcat對get和post兩種提交方式的處理方法不一樣造成的。自從Tomcat5.x開始,GET和POST方法提交的信息,Tomcat採用了不同的方式來處理編碼,對於POST請求,Tomcat會仍然使用request.setCharacterEncoding方法所設置的編碼來處理,如果未設置,則使用默認的iso-8859-1編碼。而GET請求則不同,Tomcat對於GET請求並不會考慮使用request.setCharacterEncoding方法設置的編碼,而會永遠使用iso-8859-1編碼。

解決辦法如下:

1.配置tomcat的配置文件server.xml裏這句:
             <Connector URIEncoding="GB2312" 
                 port="8080"   maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />


                 加上這句:URIEncoding="GB2312"
2.使用String name=new String(request.getParameter("name").getBytes("ISO-8859-1"),"GB2312");轉化編碼

推薦使用第二種方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章