JavaEE(2)——JSP亂碼問題
阿新 • • 發佈:2018-12-13
1 實驗目的
- 瞭解JSP頁面亂碼問題;
- 掌握URL傳遞引數亂碼問題解決方法;
- 掌握表單引數亂碼問題解決方法;
2 實驗原理
JSP程式通過URL連結傳遞引數時,但引數有中文是會亂碼。解決方法如下:
- 將獲取的引數二次編碼。先將引數按ISO8859-1編碼轉換為位元組陣列,再將位元組陣列按UTF-8重新生成字串:
String param = new String((request.getParameter("param")).getBytes("iso8859-1"),"UTF-8");
- 修改Tomcat伺服器的配置檔案。修改 Tomcat 的 config 目錄下的
server.xml
URIEncoding="UTF-8"
,重啟Tomcat伺服器即可,修改後的程式碼如下:
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"
connectionTimeout="20000"
redirectPort="8443" />
- 解決表單提交中文亂碼問題,在呼叫
request.getParameter("param");
之前,按指定的編碼(如UTF-8)從request物件中獲取引數,只需新增語句:
< %
request.setCharacterEncoding("UTF-8");
%>
3 實驗內容與步驟
3.1 解決URL傳遞引數中文亂碼問題
3.1.1 編寫下面的encode1.jsp。
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head >
<title>URL傳遞引數編碼測試</title>
</head>
<%
String param=request.getParameter("param");
%>
<body>
<a href="encode1.jsp?param='中國'">請單擊連結</a><br>
提交的中文引數為:<%=param %>
</body>
</html>
3.1.2 訪問
圖3-1 單擊連結,結果如圖3-2所示。
圖3-2 出現亂碼。
3.1.3 修改Tomcat配置檔案
修改Tomcat的config目錄下的server.xml,新增URIEncoding=“UTF-8”,修改後的程式碼如下:
重啟Tomcat伺服器,重新執行程式,結果如圖3-3所示。
圖3-3
3.2 解決表單提交中文亂碼問題
3.2.1 編寫encode2.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>form中文處理示例</title>
</head>
<body>
<font size="2">
下面是表單提交內容:
<form action="encode2.jsp" method="post">
使用者名稱:<input type="text" name="userName" size="10"/>
密碼:<input type="password" name="password" size="10"/>
<input type="submit" value="提交">
</form>
</font><br/>
<font size="2">下面是表單提交以後用request取到的表單資料:<br>
<%
String userName=request.getParameter("userName");
String password=request.getParameter("password");
if(null!=userName){
out.println("表單提交的userName的值=" + userName + "<br>");
out.println("表單提交的password的值=" + password + "<br>");
}
%>
</font>
</body>
</html>
3.2.2 訪問
如圖3-4所示。
圖3-4
輸入表單內容,然後單擊提交,彈出如圖3-5所示介面,出現亂碼情況。
圖3-5
3.2.3 新增語句
在程式碼encode2.jsp的body
域的前部增加語句,令其指定按UTF-8編碼從request物件中取引數。
<% request.setCharacterEncoding("UTF-8") %>
4 思考題
- 理解URL傳遞引數中文亂碼問題解決方法。
- 理解表單亂碼問題的解決方法。