編碼問題2轉(zhuǎn)
Jsp頁面使用URL編碼傳遞中文參數(shù)的情況下,在參數(shù)的解析過程中會(huì)出現(xiàn)亂碼。由于
java在設(shè)計(jì)的時(shí)候考慮到了國際化的問題,在java源程序編譯成字節(jié)碼的時(shí)候默認(rèn)使用的是UTF-8編碼。而在web運(yùn)用上,由于不同的瀏覽器向服務(wù)
器發(fā)送的信息采用的編碼方式不同,在由像tomcat之類的服務(wù)器解碼的時(shí)候會(huì)由于編碼方式的不同而產(chǎn)生亂碼,這是一個(gè)會(huì)困擾jsp初學(xué)者很久的問題。以
前在使用struts的時(shí)候不需要處理這些問題,前些天在做一個(gè)簡(jiǎn)單的jsp頁面的時(shí)候碰到這個(gè)問題。經(jīng)過半天的摸索,基本解決了該問題。
例子中a.jsp頁面通過URL編碼的方式傳遞中文參數(shù),在b.jsp中對(duì)該參數(shù)進(jìn)行解析。
a.jsp源代碼
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>無標(biāo)題文檔</title>
</head>
<body>
<%
String str_test = "華工";
%>
<form method=post action="b.jsp?test=<%=java.net.URLEncoder.encode(str_test) %>">
<input type="submit" value="Submit" name="提交">
</form>
</body>
</html>
b.jsp源代碼
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>無標(biāo)題文檔</title>
</head>
<body>
<%
String str = new String(request.getParameter("test").getBytes("ISO8859_1"));
%>
<BR>
<%=str %>
</body>
</html>
說明:在使用了java.net.URLEncoder.encode 編碼后,頁面獲取參數(shù)request.getParameter后需要使用ISO8859_1編碼轉(zhuǎn)換。此外,在jsp的字符集聲明中把charset=UTF-8也沒有問題
posted on 2008-01-17 14:30 backup2007 閱讀(220) 評(píng)論(0) 編輯 收藏