首頁 >Java >java教程 >如何解決JavaEE開發中字元編碼出現亂碼問題

如何解決JavaEE開發中字元編碼出現亂碼問題

巴扎黑
巴扎黑原創
2017-07-21 17:03:201773瀏覽

網路上有很多處理字元編碼的解決方案,在此,我站著前人的肩膀上作自己的總結。

在我看來,出現亂碼問題的解決方法無非就是在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn