計算機生于美國,英語是他的母語,而英語以外的其它語言對他來說都是外語。他跟我們一樣,不管外語掌握到什么程度,也不會像母語那樣使用得那么好,時常也會出一些“拼寫錯誤”問題。
亂碼的出現根本原因在于編碼和解碼使用了不同的編碼方案。比如用GBK編碼的文件,用UTF-8去解碼結果肯定都是火星文。所以要解決這個問題,中心思想就在于使用統一的編碼方案。
jsp頁面間的參數傳遞有以下幾種方式:1、表單(form)的提交。2、直接使用URL后接參數的形式(超級鏈接)。3、如果兩個jsp頁面在兩個不同的窗口中,并且這兩個窗口是父子的關系,子窗口中的jsp也可以使用javascript和DOM(window.opener.XXX.value)來取得父窗口中的jsp的輸入元素的值。下面就前兩種方式中出現的亂碼問題做一下剖析。
1、表單(form)的提交實現參數頁面間的傳遞
在介紹表單傳遞參數的內容之前,先來了解一些預備知識。表單的提交方式和請求報文中對漢字的處理。
表單的提交方式:
通常使用的表單的提交方式主要是:post和get兩種。兩者的區別在于:post方式是把數據內容放在請求的數據正文部分,沒有長度的限制;get方式則是把數據內容直接跟在請求的頭部的URL后面,有長度的限制。下面是同一個頁面兩種方式的請求報許文。
Requesttest.jsp代碼
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <%-- post方式提交表單 --%> <form action="http://localhost:8888/EncodingTest/requestresult.jsp" method="post"> UserName:<input type="text" name="username"/> Password:<input type="password" name="password"/> <input type="submit" value="Submit"> </form> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <%-- post方式提交表單 --%> <form action="http://localhost:8888/EncodingTestb/requestresult.jsp" method="post"> UserName:<input type="text" name="username"/> Password:<input type="password" name="password"/> <input type="submit" value="Submit"> </form> </body> </html>
新聞熱點
疑難解答