網路上有很多處理字元編碼的解決方案,在此,我站著前人的肩膀上作自己的總結。
在我看來,出現亂碼問題的解決方法無非就是在3個地方進行編碼設定:
1.HTML、JSP等前端頁面;
2.後台servlet中request和response物件;
3.伺服器設定檔。
1.HTML、JSP等前端頁面,出現編碼先看前端某個頁面的Meta標籤是否正確設定了編碼,這個Meta標籤也就是頁面的頭部
<span style="background-color: #ffff00; color: #000000"><%</span><span style="background-color: #f5f5f5; color: #000000">@ page language</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #800000">"</span><span style="background-color: #f5f5f5; color: #800000">java</span><span style="background-color: #f5f5f5; color: #800000">"</span><span style="background-color: #f5f5f5; color: #000000"> import</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #800000">"</span><span style="background-color: #f5f5f5; color: #800000">java.util.*</span><span style="background-color: #f5f5f5; color: #800000">"</span><span style="background-color: #f5f5f5; color: #000000"> pageEncoding</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #800000">"</span><span style="background-color: #f5f5f5; color: #800000">utf-8</span><span style="background-color: #f5f5f5; color: #800000">"</span><span style="background-color: #ffff00; color: #000000">%><br></span>
2.後台的request和response的設定
2-1.當後台接收到URL請求之後,如果沒有對請求設定編碼,那麼,接收到的請求內容就會出現亂碼,這時,要分兩種情況考慮:
2-1-1.如果是Get請求,先獲取到URL請求中的參數,例如:
String method = request.getParameter("method");
接著呼叫String物件完成參數編碼的轉化,
String parseMethod = new String(method.getBytes("ISO-8859-1"),"UTF-8");
這裡的String的建構方法有兩個參數:將參數從字串的形式轉換為字元陣列作為第一個參數,第二個參數是轉換後的字串的編碼方式。
2-1-2.如果是Post請求,直接在取得請求參數之前加上一句設定編碼的程式碼,也就是呼叫request物件的設定編碼的setCharacterEncoding方法:
request.setCharacterEncoding("UTF-8");
2.2.當後台完成業務邏輯及持久化的操作後,這時可能需要向前台輸出響應流數據,若輸出的內容包含中文,就需要設定response物件的編碼,可以直接呼叫response物件的setContentType方法:
response.setContentType("text/html;charset=utf-8");
3.伺服器設定檔的設定
# 目前兩步驟設定好了之後依舊不奏效的情況下,還應在伺服器的安裝目錄下的conf資料夾下,例如我的是E:\tomcat7.0\conf,找到伺服器的設定檔server.xml進行設置:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
#
以上是如何解決JavaEE開發中字元編碼出現亂碼問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!