首頁 > Java > Java基礎 > 主體

java web亂碼解決方法

發布: 2019-12-09 16:33:05
原創
3317 人瀏覽過

java web亂碼解決方法

設定檔的儲存編碼格式,這個一般在新建專案時,設定了GBK的編碼格式,此時檔案的頁面編碼格式是GBK的,而儲存格式是ANSI的,後來把項目及文件的編碼格式改為utf-8的編碼格式後,依然出現中文亂碼,這就是因為已經存在的文件的保存編碼格式還是ANSI把致,所以要把以前的.java文件的保存格式改為utf-8,才不會出現中文註解亂碼問題

window-preferences-General-Content Types 在Text下選擇對應的檔案類型再改頁面編碼為UTF-8然後點Update就可以了。

附註:

如果是全新的工作空間,設定Myeclipse的編碼格式,就等於設定了項目,檔案及其儲存的編碼格式了(不包含jsp等檔案)

如果是已經存在的工作間,而原來的編碼格式為​​GBK,那麼更改工作空間的編碼,則相當於設定了項目,檔案的編碼格式,但是對於以前已經存在的.java文件,其保存編碼是改變不了的,必須按上面(4)去更改,但是對於將要新建的文件的保存編碼是有作用的

亂碼要檢查的幾個地方

1.已儲存的編碼

2.jsp裡宣告的編碼(UTF-8和utf8是一樣的)

注意:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
登入後複製

3 .過濾器裡處理的字元編碼,僅限於輸入的輸出的資料編碼。而上面那句程式碼中設的編碼格式就是頁面的顯示格式。

一份javaweb的專案程式碼中,總共有這幾種格式:

1.程式碼的儲存格式2.瀏覽器的解析格式3.資料輸入時的格式(也就是瀏覽器的解析格式決定)4.資料處理時的格式。

java web亂碼解決方法

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

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

Jsp裡的宣告語句可以弄掉四種格式,而剩下的兩種格式可以用監聽器的方法解決:

新建一個監聽器

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>
登入後複製

更多java知識請關注java基礎教學欄位。

以上是java web亂碼解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!