Java Web の文字化けの解決策

リリース: 2019-12-09 16:33:05
オリジナル
3329 人が閲覧しました

Java Web の文字化けの解決策

ファイルの保存エンコード形式を設定します。通常、プロジェクトを新規作成する場合、GBK エンコード形式が設定されます。このとき、ファイルのページエンコード形式は GBK、保存形式は ANSI で、その後、プロジェクトとファイルのエンコード形式を UTF-8 エンコード形式に変更した後も、中国語の文字化けが発生しました。これは、既存のファイルの保存エンコード形式が ANSI のままであるため、以前の.java ファイルを保存する必要があります。中国語のコメント文字化けの問題が発生しないように、フォーマットを utf-8 に変更してください。

window-preferences-General-Content Types Text で対応するファイル タイプを選択し、ページのエンコードを UTF-8 に変更し、「更新」をクリックします。

注:

新しいワークスペースの場合、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. データ入力形式 (つまり、ブラウザの解析によって決定されます) format) 4. データ処理時のフォーマット。

Java Web の文字化けの解決策

上記 6 つの形式は原則として同一である必要があり、文字化けすることはありませんが、特殊な場合があり、その中には矛盾するものもあります。正しく表示されない場合は、入力コンテンツを表示および処理するときに、リクエストとレスポンスの形式が他の形式と一致しない可能性があります。 ps: 一般的に使用されるエンコードは、ISO-8859-1、gbk、utf-8

# です。 ##したがって、絶対確実な方法は次のとおりです。


Jsp の宣言ステートメントは 4 つの形式を削除でき、残りの 2 つの形式はリスナー メソッドを使用して解決できます。


新しいリスナーの作成


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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート