我們做Web程項(xiàng)目的時(shí)候經(jīng)常會遇到中文亂碼的問題,因?yàn)镠ttp協(xié)議中默認(rèn)的編碼字符集不是中文的,并且平臺字符集也不是中文的,這就需要我們手動把它改成中文字符集,防止后臺顯示亂碼。
首先我們要清楚我們是改不了別人的字符集的,我們只需關(guān)心我們自己的運(yùn)行平臺上的字符集是中文的,并且request請求和response響應(yīng)里面的字符集改成中文的就可以了。這是因?yàn)槲覀円褌鬟f過來的數(shù)據(jù)字符集改成中文編碼形式的才能在我們的平臺上正常顯示,響應(yīng)的編碼形式也要改成中文的才有可能在別人的平臺上顯示成中文形式。
首先我們要把自己平臺上的編碼形式改成中文的,也就是你平臺上每一個網(wǎng)頁的編碼形式是中文的,HTML網(wǎng)頁中的charset改成UTF-8,JSP網(wǎng)頁中的pageEncoding改成UTF-8或者GBK。
其次,我們要把Http協(xié)議中發(fā)送過來的請求編碼改成中文形式,由于對你平臺的任何網(wǎng)頁都要處理請求中的編碼問題,所以我們就要做一個過濾器,它的作用是每一次對你項(xiàng)目中任何網(wǎng)頁的請求都要經(jīng)過這個過濾器的處理才能進(jìn)入。有了這個過濾器我們就不再擔(dān)心字符集編碼的問題了,因此我們要寫一個字符集轉(zhuǎn)換的類,并且在Web.xml中配置它,以下是該類源代碼和配置過程:
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.bx.servletform.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
源代碼是如下:
public class EncodingFilter implements Filter{

String encoding = "";
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("pass here------------");
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
public void init(FilterConfig config) throws ServletException {
String encoding = config.getInitParameter("encoding");
this.encoding = encoding;
System.out.println("初次訪問"+encoding);
}
}
這樣,每次對網(wǎng)頁的請求都會進(jìn)入到這個過濾器中,并且把request和response的編碼形式改成UTF-8形式,防止了中文亂碼。
首先我們要清楚我們是改不了別人的字符集的,我們只需關(guān)心我們自己的運(yùn)行平臺上的字符集是中文的,并且request請求和response響應(yīng)里面的字符集改成中文的就可以了。這是因?yàn)槲覀円褌鬟f過來的數(shù)據(jù)字符集改成中文編碼形式的才能在我們的平臺上正常顯示,響應(yīng)的編碼形式也要改成中文的才有可能在別人的平臺上顯示成中文形式。
首先我們要把自己平臺上的編碼形式改成中文的,也就是你平臺上每一個網(wǎng)頁的編碼形式是中文的,HTML網(wǎng)頁中的charset改成UTF-8,JSP網(wǎng)頁中的pageEncoding改成UTF-8或者GBK。
其次,我們要把Http協(xié)議中發(fā)送過來的請求編碼改成中文形式,由于對你平臺的任何網(wǎng)頁都要處理請求中的編碼問題,所以我們就要做一個過濾器,它的作用是每一次對你項(xiàng)目中任何網(wǎng)頁的請求都要經(jīng)過這個過濾器的處理才能進(jìn)入。有了這個過濾器我們就不再擔(dān)心字符集編碼的問題了,因此我們要寫一個字符集轉(zhuǎn)換的類,并且在Web.xml中配置它,以下是該類源代碼和配置過程:
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.bx.servletform.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
源代碼是如下:






















這樣,每次對網(wǎng)頁的請求都會進(jìn)入到這個過濾器中,并且把request和response的編碼形式改成UTF-8形式,防止了中文亂碼。