您好,登錄后才能下訂單哦!
java web中文亂碼怎么解決?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
設(shè)置文件的保存編碼格式,這個一般在新建項目時,設(shè)置了GBK的編碼格式,這時文件的頁面編碼格式是GBK的,而保存格式是ANSI的,后來把項目及文件的編碼格式改為utf-8的編碼格式后,依然出現(xiàn)中文亂碼,這就是因為已經(jīng)存在的文件的保存編碼格式還是ANSI把致,所以要把以前的.java文件的保存格式更改為utf-8,才不會出現(xiàn)中文注釋亂碼問題
window-preferences-General-Content Types 在Text下選擇對應(yīng)的文件類型再改頁面編碼為UTF-8然后點(diǎn)Update就可以了。
注:
如果是一個全新的工作空間,設(shè)置Myeclipse的編碼格式,就等于設(shè)置了項目,文件及其保存的編碼格式了(不包含jsp等文件)
如果是一個已經(jīng)存在的工作間,而原來的編碼格式為GBK,那么更改工作空間的編碼,則相當(dāng)于設(shè)置了項目,文件的編碼格式,但是對于以前已經(jīng)存在的.java文件,其保存編碼是改變不了的,必須按上面(4)去更改,但是對于將要新建的文件的保存編碼是有作用的
亂碼要檢查的幾個地方
1.保存的編碼
2.jsp里聲明的編碼(UTF-8和utf8是一樣的)
注意:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
3.過濾器里處理的字符編碼,僅限于輸入的輸出的數(shù)據(jù)編碼。而上面那句代碼中設(shè)的編碼格式是頁面的顯示格式。
一份javaweb的項目代碼中,總共有這幾種格式:
1.代碼的保存格式2.瀏覽器的解析格式3.數(shù)據(jù)輸入時的格式(也就是瀏覽器的解析格式?jīng)Q定)4.數(shù)據(jù)處理時的格式。
原則上以上六種格式都要一樣,就絕對不會亂碼,但有一些特殊情況,其中有一些不一致,顯示也會正確,如不需要將輸入的內(nèi)容進(jìn)行顯示和處理時request和respose的格式可以與其他的格式不一致,ps:常用編碼ISO-8859-1,gbk,utf-8
因此萬無一失的辦法如下:
Jsp里的聲明語句可以弄掉四種格式,而剩下的兩種格式可以用監(jiān)聽器的方法解決:
新建一個監(jiān)聽器
package com.helloweenvsfei.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class CharacterEncodingFilter implements Filter{ private String characterEncoding; private boolean enabled; public void destroy() { // TODO Auto-generated method stub characterEncoding = null; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub if(enabled || characterEncoding != null){ request.setCharacterEncoding(characterEncoding); response.setCharacterEncoding(characterEncoding); } chain.doFilter(request, response); } public void init(FilterConfig config) throws ServletException { // TODO Auto-generated method stub characterEncoding = config.getInitParameter("characterEncoding"); enabled = "true".equalsIgnoreCase(config.getInitParameter("enabled").trim()); } }
web.xml
<filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>com.helloweenvsfei.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>characterEncoding</param-name> <param-value>utf8</param-value> </init-param> <init-param> <param-name>enabled</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
關(guān)于java web中文亂碼的解決方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。