主 題: |
|
散分,順便分享我的JSP中文字元處理心得(原創) |
作 者: |
|
joyous (NULL) |
等 級: |
|
|
信 譽 值: |
|
99 |
所屬社區: |
|
Java Web 開發 |
問題點數: |
|
100 |
回複次數: |
|
1 |
發表時間: |
|
2006-08-17 09:38:12 |
JSP代碼中的 JAVA 字元編碼設定
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="java.net.URLEncoder"%>
(好像上條語句並非必要)
紅色為制定JSP處理字元採用UTF-8編碼處理方式。
<%request.setCharacterEncoding ("UTF-8");%>
JSP內JAVA代碼設定接收參數為UTF-8編碼,在form提交,post還是get都支援中文,如果沒有該設定,就只能使用get方式。
JSP 內 HTML 頭的編碼設定
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Note Page</title>
</head>
<body>
……
……
紅色部分UTF-8制定HTML頁面使用的編碼方式
form 提交代碼如下
<form action=index.jsp method="post"><h3>Please Input Your Name:</h3>
<input type="text" size="30" name="yourname" value="" >
<input type=submit value="提交">
</form>
接收代碼如下:
<%
String temp1 = request.getParameter ("yourname");
……
%>
超連結參數傳遞方式略有不同,若只採用以上設定,遇中文參數,直接提交會導致部分文字擷取參數,再提交前務必進行編碼。
<a href="
<%=request.getContextPath()%>/index.jsp?yourname=
<%=java.net.URLEncoder.encode (Joho,"UTF-8")%>">
<%=MyName%>
</a>
由java.net.URLEncoder.encode函數將要發送的變數解析為16進位數字編碼,進行URL傳遞,若不編碼接收到的資訊很可能是/ufffd或者是殘缺的中文,示範接收代碼如下:
<%String str = request.getParameter ("傳遞的參數名");%>
<p>Hello: <%=str%></p>
由此,獲得參數後的str內將是正確的中文資訊。
設定完畢將完美解決JSP中文字元參數問題,MySQL也同樣設定為UTF-8編碼,資料庫存取沒問題,Tomcat伺服器環境進行任何設定。