網(wǎng)上有很多處理字符編碼的解決方案,在此,我站著前人的肩膀上作自己的總結(jié)。
在我看來,出現(xiàn)亂碼問題的解決方法無非就是在3個地方進行編碼設(shè)置:
1.HTML、JSP等前端頁面;
2.后臺servlet中request和response對象;
3.服務(wù)器配置文件。
1.HTML、JSP等前端頁面,出現(xiàn)編碼首先看前端某個頁面的Meta標簽是否正確設(shè)置了編碼,這個Meta標簽也就是頁面的頭部
1
|
<%@ page language= "java" import = "java.util.*" pageEncoding= "utf-8" %> |
2.后臺的request和response的設(shè)置
2-1.當后臺接收到URL請求之后,如果沒有對請求設(shè)置編碼,那么,接收到的請求內(nèi)容就會出現(xiàn)亂碼,這時,要分兩種情況考慮:
2-1-1.如果是Get請求,先獲取到URL請求中的參數(shù),例如:
1
|
String method = request.getParameter( "method" ); |
然后調(diào)用String對象完成參數(shù)編碼的轉(zhuǎn)化,
1
|
String parseMethod = new String(method.getBytes( "ISO-8859-1" ), "UTF-8" ); |
這里的String的構(gòu)造方法有兩個參數(shù):將參數(shù)從字符串的形式轉(zhuǎn)化為字符數(shù)組作為第一個參數(shù),第二個參數(shù)是轉(zhuǎn)化后的字符串的編碼方式。
2-1-2.如果是Post請求,直接在獲取請求參數(shù)之前加上一句設(shè)置編碼的代碼,也就是調(diào)用request對象的設(shè)置編碼的setCharacterEncoding方法:
1
|
request.setCharacterEncoding( "UTF-8" ); |
2.2.當后臺完成業(yè)務(wù)邏輯及持久化的操作后,這時可能需要向前臺輸出響應(yīng)流數(shù)據(jù),若輸出的內(nèi)容包含中文,就需要設(shè)置response對象的編碼,可以直接調(diào)用response對象的setContentType方法:
1
|
response.setContentType( "text/html;charset=utf-8" ); |
3.服務(wù)器配置文件的設(shè)置
當前兩步設(shè)置好了之后依舊不奏效的情況下,還應(yīng)在服務(wù)器的安裝目錄下的conf文件夾下,比如我的是E:\tomcat7.0\conf,找到服務(wù)器的配置文件server.xml進行設(shè)置:
1
|
<Connector connectionTimeout= "20000" port= "8080" protocol= "HTTP/1.1" redirectPort= "8443" URIEncoding= "UTF-8" /> |
以上這篇解決JavaEE開發(fā)中字符編碼出現(xiàn)亂碼的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持服務(wù)器之家。