1. 程式人生 > >jsp之間傳遞中文是亂碼的解決

jsp之間傳遞中文是亂碼的解決

原文地址:http://news.newhua.com/news1/program_language/2010/29/1029144432D534132FGI13558JFIDFH5HBB04DGH3KD57D7JKK13D59.html


原始碼,a.jsp往b.jsp傳值:

  a.jsp頁面內容:

  <%@ page language="java" import="java.util.*" pageEncoding="GB2312"% >

  <form action="b.jsp">

  name:<input type=text name=name>

  <input type=submit>

  </form>

  b.jsp頁面內容:

  <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>

  <%

  String name=request.getParameter("name");

  %>

  <body>

  <%=name%>

  </body>

  現象:中文亂碼,比如“??????”

  解決方法如下:

  方法一:

  1.在b.jsp中把pageEncoding="GB2312"改為pageEncoding="ISO8859- 1"

  雖然這樣b.jsp頁面顯示的內容還是亂碼,但是不是那種“??????”的亂碼,而是一些特殊字元

  2.然後在瀏覽器中檢視選單中修改成GB2312的編碼,這時亂碼就顯示中文了。

  正在裝載資料……

  3.但是這種方法是不可行的。

  方法二:

  1.在b.jsp中把String name=request.getParameter("name");修改為

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

  2.這時再在頁面上顯示,則就是中文了。

  3.但是我個人不喜歡這種方法,因為編寫起來程式碼非常繁瑣

  方法三:

  1.有人說修改get/post的傳值方式,但是這是有前提的,如果只是把get方式修改成post方式,頁面結果還是亂碼!

  2.前提你必須配置了過濾器,若果你只是配置了過濾器,則傳值方式必須是:post方式才不是亂碼,如果是get方式照樣是亂碼!

  3.過濾器的配置,我想大家都能有,我就不說了

  方法四:

  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.雖然可以但是有前提的, 若果你過濾器沒有配置,則只是配置了server.xml檔案,這樣只有在表單是get傳值時候才可以!當是post方式時,照樣是亂碼!

  * 這時我們就可以看出在tomcat5中的post與get傳值方式是不一樣的*

  * 有人要問有沒有一種方法讓傳值使用get方式或post方式都好用呢,下面就是我推薦的方法五 *

  方法五:

  1.其實很簡單,就是同時實現方法三又實現方法四!

  2.就是先配置過濾器,又配置server.xml檔案,都設定成GB2312的編碼

  3.這樣無論是 post還是get方式的表單傳值,中文都不會是亂碼!