Tomcat 中 jsp 中文亂碼顯示處理解決方案
JSP 中文亂碼處理解決方案
初學JSP,尤其是Tomcat環境,經常會因為中文漢字字符集設定問題導致中文亂碼,本文就這一問題提出解決方案,解決中文亂碼問題,供各位參考,我採用的方案是統一字符集至UTF-8,同時避免GB2312所帶來的中文字符集不夠用的隱患,需注意的地方有三點,預設情況下是英文字符集。
1、Tomcat 的 server.xml 檔案,設定伺服器埠工作方式
2、Servlet 和 JavaBean 對字串字符集處理的統一
3、JSP頁面的字符集統一
完成這三點統一,中文想亂碼都難,如果使用MySQL的話,資料表也需要做UTF-8統一。
修改Tomcat的server.xml檔案,該檔案位於 tomcat/conf,紅色部分為新增部分,也就是當前使用的HTTP埠的連線方式的設定。
找到Connector 標籤,使 Tomcat 伺服器以UTF-8模式進行工作,從底層對亂碼進行處理,修改如下:
<Connector URIEncoding="utf-8" port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
執行程式碼內設定如下:
JavaBean 和 Servlet 內需要處理中文的地方之前,或者所有函式最前端加上
request.setCharacterEncoding ("UTF-8");
response.setCharacterEncoding ("UTF-8");
避免在 JavaBean 和 Servlet 內出現漢字亂碼。
JSP程式碼中的 JAVA 字元編碼設定,在頁面上對亂碼進行處理。
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
紅色為制定JSP處理字符采用UTF-8編碼處理方式。
<%request.setCharacterEncoding ("UTF-8");%>
JSP內JAVA程式碼設定接收引數為UTF-8編碼
JSP 內 HTML 頭的編碼設定,頁面處理以UTF-8,避免顯示亂碼。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8
<title>Note Page</title>
</head>
<body>
……
……
紅色部分UTF-8制定HTML頁面使用的編碼方式
<form action=index.jsp method="post"><h3>Please Input Your Name:</h3>
<input type="text" size="30" name="中文名字" value="" >
<input type=submit value="提交">
</form>
接收程式碼如下:
<%
// 通過二進位制傳遞的引數,因為UTF-8的設定,無須轉換,直接中文操作,而不會出現亂碼。
String temp1 = request.getParameter ("yourname");
……
%>
採用get方式略有不同,若只採用以上設定,遇中文引數,因編碼不同,會導致部分文字資訊丟失,所以在提交前務必進行編碼,這裡用到兩個函式java.net.URLDecoder.decode 和java.net.URLDecoder.encode,分別是編碼和解碼。
<a href="
<%=request.getContextPath()%>/index.jsp?傳遞的引數名=
<%=java.net.URLEncoder.encode (傳遞的漢字變數,"UTF-8")%>">
<%=超連結熱點顯示內容%>
</a>
作為引數傳遞的中文,由 java.net.URLEncoder.encode函式將要傳送的變數解析為16進位制數字編碼,進行URL傳遞,接收程式碼如下:
<%String str = request.getParameter ("傳遞的引數名");%>
由此,獲得引數後的 str 內將是正確的中文資訊,完全避免了亂碼的顯示。
可用 java.net.URLDecoder.decode 函式
例如
<%
String str1 = java.net.URLDecoder.decode(request.getParameter("傳遞的引數名"),"UTF-8");
%>
完畢將完美解決中文字元引數亂碼問題。
blog.csdn.net/joyous/article/details/1504274
Q群討論:236201801