當前位置:編程學習大全網 - 源碼下載 - 怎麽解決jsp頁面get傳值中文亂碼問題

怎麽解決jsp頁面get傳值中文亂碼問題

在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");轉化編碼

推薦使用第二種方式。

@RequestMapping(value="/edit",method={RequestMethod.POST},produces = "application/json; charset=utf-8") //這種解碼方式只對post提交方式有效

註:

若是您的項目是用maven來控制的,第壹種在server.xml 中添加URIEncoding="gb2312" 有時候會不太好用,因為maven有clean功能,每次清空都會將這個文件重新寫壹遍,所以您添加進去的這句話就不太有用了。需要每次項目用maven 清空重新加載之後再次修改server.xml這個文件。相對來說比較麻煩。

  • 上一篇:java md5加密 index頁面代碼
  • 下一篇:通達信扭轉下壓是什麽意思
  • copyright 2024編程學習大全網