溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java web中文亂碼怎么解決

發(fā)布時間:2020-06-18 10:54:17 來源:億速云 閱讀:281 作者:Leah 欄目:編程語言

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ù)處理時的格式。

java web中文亂碼怎么解決

原則上以上六種格式都要一樣,就絕對不會亂碼,但有一些特殊情況,其中有一些不一致,顯示也會正確,如不需要將輸入的內(nèi)容進(jìn)行顯示和處理時request和respose的格式可以與其他的格式不一致,ps:常用編碼ISO-8859-1,gbk,utf-8

因此萬無一失的辦法如下:

Jsp里的聲明語句可以弄掉四種格式,而剩下的兩種格式可以用監(jiān)聽器的方法解決:

新建一個監(jiān)聽器

java web中文亂碼怎么解決

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é)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(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)容。

AI