java web中文亂碼怎么解決?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
設置文件的保存編碼格式,這個一般在新建項目時,設置了GBK的編碼格式,這時文件的頁面編碼格式是GBK的,而保存格式是ANSI的,后來把項目及文件的編碼格式改為utf-8的編碼格式后,依然出現(xiàn)中文亂碼,這就是因為已經(jīng)存在的文件的保存編碼格式還是ANSI把致,所以要把以前的.java文件的保存格式更改為utf-8,才不會出現(xiàn)中文注釋亂碼問題
window-preferences-General-Content Types 在Text下選擇對應的文件類型再改頁面編碼為UTF-8然后點Update就可以了。
注:
如果是一個全新的工作空間,設置Myeclipse的編碼格式,就等于設置了項目,文件及其保存的編碼格式了(不包含jsp等文件)
如果是一個已經(jīng)存在的工作間,而原來的編碼格式為GBK,那么更改工作空間的編碼,則相當于設置了項目,文件的編碼格式,但是對于以前已經(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ù)編碼。而上面那句代碼中設的編碼格式是頁面的顯示格式。
一份javaweb的項目代碼中,總共有這幾種格式:
1.代碼的保存格式2.瀏覽器的解析格式3.數(shù)據(jù)輸入時的格式(也就是瀏覽器的解析格式?jīng)Q定)4.數(shù)據(jù)處理時的格式。
原則上以上六種格式都要一樣,就絕對不會亂碼,但有一些特殊情況,其中有一些不一致,顯示也會正確,如不需要將輸入的內(nèi)容進行顯示和處理時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)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
分享名稱:javaweb中文亂碼怎么解決-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://jinyejixie.com/article16/jsidg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設、定制網(wǎng)站、網(wǎng)站排名、搜索引擎優(yōu)化、定制開發(fā)、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容