程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> 關於JSP亂碼問題(頁面傳值產生的亂碼)

關於JSP亂碼問題(頁面傳值產生的亂碼)

編輯:關於JSP

在JSP的輸入框中寫入中文,傳給後台的時候,常常會出現亂碼問題:

 

今天看了韓順平老師的視頻,對亂碼問題有了初步的認識,又經過自己的實踐,把總結寫出來。

 

 

產生亂碼的原因:java在網絡上進行傳輸的時候,用的是iso-8859-1的編碼形式進行傳輸。所以,在編碼和解碼(得到傳遞值)的時候,要對應起來。。

 

解決方法主要有三個:

 

1.重新轉碼new String(u.getBytes("iso-8859-1"),"gb2312");

2.使用過濾器來解決[不穩定]

3.通過配置server.xml文件[不太穩定]

 

例 :

 

String userName = requset.getParameter("userName");

userName = new String(userName.getBytes("iso-8859-1"),"gb2312");

 

但每次都這樣轉,還是太麻煩了,因此可以寫一個工具類,提供這個將亂碼轉成gb2312.

public class Tools{

//提供一個方法,將亂碼轉化成gb2312

public static String getNewString(String input){

String result = "";

try{

result = new String(input.getBytes("iso-8859-1"),"gb2312");

}catch(Exception e){

e.printStackTrace();

}

return result;

}

 

 

在用的時候,

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

userName = Tools.getNewString(u);

 

注:在用這種方法時,後面的不一定就是gb2312,可以是gbk,utf-8.具體是哪一種,要取決於向該控制器傳值的頁面是哪個編碼。

 

比如我的login.jsp中,是<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>,因此,我就得用

 

id = new String(id.getBytes("iso-8859-1"),"utf-8");了。。。不能犯照抄的錯誤呀。

 

第三種方法:韓老師只是說了這種方法可以解決,它自己試驗時沒能通過,我試驗也沒能通過。可能和tomcat的版本有關系 。

 

在tomcat的配置文件server.xml中,

<Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

加一個屬性  URIEncoding="GBK"

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved