struts2中關於jsp頁面向action傳值出現亂碼問題


在JSP頁面輸入中文並傳給后台的時候,常常會出現亂碼問題,產生亂碼的原因:java在進行傳值的時候,默認用的是iso-8859-1的編碼形式進行傳輸,而我們jsp頁面常用的則是utf-8的編碼形式。所以,兩者不對應,在解析的時候就出現亂碼現象。

  有以下幾種解決方案

一:在struts.xml文件中添加

  <constant name="struts.i18n.encoding" value="utf-8"></constant>

  注:這里value="urt-8"指的是頁面的編碼格式,如果頁面的編碼格式是GBK,則寫GBK

二:在Action中重新轉碼:利用.new String(name.getBytes("iso-8859-1"),"utf-8");

  例:this.name= new String(name.getBytes("iso-8859-1"),"utf-8");

  注:這里的name是從頁面傳過來的參數,只要在這里重新轉碼就可以了,另外,這里的utf-8依然是頁面的編碼格式。

  但每次都這樣轉,太麻煩了,因此可以寫一個工具類,將亂碼轉成utf-8

public class Tools{
//提供一個方法,將亂碼轉化成utf-8

public static String getNewString(String input){
String result = "";
try{
result = new String(input.getBytes("iso-8859-1"),"utf-8");
}catch(Exception e){
e.printStackTrace();
}
return result;
}

在用的時候直接調用就行了:userName = Tools.getNewString(name);

三:就是在tomcat中修改server.xml, 個人不推薦這得方法,其一:不穩定,其二:在工作中修改服務器的配置文件不是一件容易的事情,所以這里就不舉例說明。

四:CharacterEncodingFilter的使用,但這個東西不是萬能的,但有時候沒有它就會很麻煩,所以還是加上,以防萬一,但需要說明一點:這個filter只對post請求有效, get請求一律忽略。例:在web.xml中如下配置:

<!--字符編碼--> 
 <filter>
  <filter-name>CharacterEncodingFilter</filter-name>
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  <init-param>
   <param-name>encoding</param-name>
   <param-value>utf-8</param-value>
  </init-param>
 </filter>
 <filter-mapping>
  <filter-name>CharacterEncodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM