JSP 中文亂碼顯示處理解決方案

來源:互聯網
上載者:User

JSP 中文亂碼處理解決方案

 

初學JSP,尤其是Tomcat環境(GlassFish預設UTF-8,則不存在此類問題),經常會因為中文漢字字元集設定問題導致中文亂碼,本文就這一問題提出解決方案,解決中文亂碼問題,供各位參考,我採用的方案是統一字元集至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" />

其它應用伺服器例如GlassFish預設支援utf-8,伺服器本身無需設定,只須代碼上注意即可。

 

運行代碼內設定如下:

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.decodejava.net.URLDecoder.decode,分別是編碼和解碼。

 

<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");

%>

 

    完畢將完美解決中文字元參數亂碼問題。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.