Servlet 與 JSP 中文亂碼問題小結_Jian

來源:互聯網
上載者:User

Forword:

對於 Jian 這樣的菜鳥,在做javaEE項目時,中文亂碼的問題實在是很頭疼的說。

今天就將這處女博文獻給你吧,中文哥。

 

Question_1: [jsp 內容顯示中文亂碼]

如果在沒有與任何 Servlet 互動的 jsp 頁面,單純顯示內容出現中文亂碼,仔細觀察頁面頭的編碼設定,如:

 

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1" %> 

 

將其中的編碼屬性值更改為 pageEncoding="gbk" 即可正常顯示 (當然也可設定為 "utf-8" 或者 "gb2312") 

建議編碼方式最好保持一致性,比如 Jian 就決定一致使用 "gbk",因為字最少...

 

Question_2: [jsp 與 Servlet 間跳轉出現中文亂碼]

情況一: method="Post"

jsp 中form 表單的 ation="XxxServlet",method="Post"時,提交表單後往往發現中文的屬性值在 Servlet 中擷取後變亂碼。

此時需要定位到 doPost() 方法,首先在方法內首行加上如下 code:

 

request.setCharacterEncoding("gbk");

 

意思是設定 request 的編碼為 "gbk",一般與 jsp 頁面一致

然後,再添加 code:

 

response.setCharacterEncoding("gbk");

response.setContentType("text/html;charset=gbk");

 

意思是設定 response 的編碼為 "gbk",即 Servlet 回傳 jsp 時的編碼,上面兩段用其一即可,保持一致是關鍵。

 

情況二: method="Get"

jsp 中form 表單的 ation="XxxServlet",method="Get"時,提交表單後往往發現中文的屬性值在 Servlet 中擷取後變亂碼。

此時需定位的 tomcat 的安裝目錄 %TOMCAT%/conf/server.xml 檔案 

尋找如下程式碼片段:

 

<Connector port="8080" protocol="HTTP/1.1"<br /> maxThreads="150"<br /> connectionTimeout="20000"<br /> redirectPort="8443"<br /> URIEncoding="gbk"/>

 

 最後的 URIEncoding="gbk" 是 Jian 手工添加的,為的就是解決 Get 的中文亂碼問題。

 

Conclusion:

簡單的小結了一下 Servlet 與 JSP 比較常見的中文亂碼問題,Jian 要多做技術總結,溫故而知新...

 

Confusion:

考慮在 <a href="XxxServlet?flag=###">超連結</a> 中,### 換為中文貌似是有問題的,記得以前是遇到過,還沒解決。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.