Tomcat 編碼不一致導致亂碼

衆所周知,Tomcat是一個基於HTTP協議的Java應用服務器(非Web服務器),也是一個Servlet容器.

一般我們會基於使用HTTP協議的Post或Get方法來傳遞內容或參數,中間會涉及一些編解碼操作,若不瞭解編解碼過程可能會遇到亂碼或解析問題.

接下來,我們來了解下調用方與tomcat交互時編解碼過程:

  1. 調用方使用utf-8進行encode(可在代碼層實現)
  2. tomcat使用iso8859-1進行decode(server.xml對應的Connector設置)
  3. servlet使用iso8859-1進行encode(webapp中web.xml中設置,注意:該方式僅tomcat 7.x 版本支持)
  4. 服務方使用utf-8進行decode(可在代碼層實現)

提醒:不知道大家可注意到了,調用方與服務方最終使用的編碼格式必須統一;另外,tomcat與servlet的編碼格式也必須統一.當然我們因業務需要也可以使用其他編碼格式(如:GBK),但建議爲了跨平臺和字符集兼容,建議統一使用UTF-8

那麼當我們真的出現了編碼問題如何解決呢?

1.修改JSP頁面的Content-Type類型爲UTF-8(<%@page    cotnentType="mime/type; charset=UTF-8" %>)

2.在server.xml<Connector>設置URIEncoding="UTF-8"或useBodyEncodingForURI="true"

3.在web.xml字符編碼過濾器中設置編碼爲UTF-8

4.把所有servlets的Content-Type設置爲UTF-8
發佈了60 篇原創文章 · 獲贊 71 · 訪問量 1450萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章