jsp使用URL編碼傳遞中文參數問題__JSONP
來源:互聯網
上載者:User
Jsp頁面使用URL編碼傳遞中文參數的情況下,在參數的解析過程中會出現亂碼。由於java在設計的時候考慮到了國際化的問題,在java來源程式編譯成位元組碼的時候預設使用的是UTF-8編碼。而在web運用上,由於不同的瀏覽器向伺服器發送的資訊採用的編碼方式不同,在由像tomcat之類的伺服器解碼的時候會由於編碼方式的不同而產生亂碼,這是一個會困擾jsp初學者很久的問題。以前在使用struts的時候不需要處理這些問題,前些天在做一個簡單的jsp頁面的時候碰到這個問題。經過半天的摸索,基本解決了該問題。 例子中a.jsp頁面通過URL編碼的方式傳遞中文參數,在b.jsp中對該參數進行解析。 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>無標題文檔</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>無標題文檔</title> </head> <body> <% String str = new String(request.getParameter("test").getBytes("ISO8859_1")); %> <BR> <%=str %> </body> </html> 說明:在使用了java.net.URLEncoder.encode 編碼後,頁面擷取參數request.getParameter後需要使用ISO8859_1編碼轉換。此外,在jsp的字元集聲明中把charset=UTF-8也沒有問題。