java web中文亂碼怎么解決?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)順慶,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
設(shè)置文件的保存編碼格式,這個(gè)一般在新建項(xiàng)目時(shí),設(shè)置了GBK的編碼格式,這時(shí)文件的頁面編碼格式是GBK的,而保存格式是ANSI的,后來把項(xiàng)目及文件的編碼格式改為utf-8的編碼格式后,依然出現(xiàn)中文亂碼,這就是因?yàn)橐呀?jīng)存在的文件的保存編碼格式還是ANSI把致,所以要把以前的.java文件的保存格式更改為utf-8,才不會(huì)出現(xiàn)中文注釋亂碼問題
window-preferences-General-Content Types 在Text下選擇對應(yīng)的文件類型再改頁面編碼為UTF-8然后點(diǎn)Update就可以了。
注:
如果是一個(gè)全新的工作空間,設(shè)置Myeclipse的編碼格式,就等于設(shè)置了項(xiàng)目,文件及其保存的編碼格式了(不包含jsp等文件)
如果是一個(gè)已經(jīng)存在的工作間,而原來的編碼格式為GBK,那么更改工作空間的編碼,則相當(dāng)于設(shè)置了項(xiàng)目,文件的編碼格式,但是對于以前已經(jīng)存在的.java文件,其保存編碼是改變不了的,必須按上面(4)去更改,但是對于將要新建的文件的保存編碼是有作用的
亂碼要檢查的幾個(gè)地方
1.保存的編碼
2.jsp里聲明的編碼(UTF-8和utf8是一樣的)
注意:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
3.過濾器里處理的字符編碼,僅限于輸入的輸出的數(shù)據(jù)編碼。而上面那句代碼中設(shè)的編碼格式是頁面的顯示格式。
一份javaweb的項(xiàng)目代碼中,總共有這幾種格式:
1.代碼的保存格式2.瀏覽器的解析格式3.數(shù)據(jù)輸入時(shí)的格式(也就是瀏覽器的解析格式?jīng)Q定)4.數(shù)據(jù)處理時(shí)的格式。
原則上以上六種格式都要一樣,就絕對不會(huì)亂碼,但有一些特殊情況,其中有一些不一致,顯示也會(huì)正確,如不需要將輸入的內(nèi)容進(jìn)行顯示和處理時(shí)request和respose的格式可以與其他的格式不一致,ps:常用編碼ISO-8859-1,gbk,utf-8
因此萬無一失的辦法如下:
Jsp里的聲明語句可以弄掉四種格式,而剩下的兩種格式可以用監(jiān)聽器的方法解決:
新建一個(gè)監(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
characterEncodingFilter com.helloweenvsfei.filter.CharacterEncodingFilter characterEncoding utf8 enabled true characterEncodingFilter /*
關(guān)于java web中文亂碼的解決方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。