ホームページ > php教程 > php手册 > Tomcat 5.0.19 の中国語文字化けコードを完全に解決 (フィルター)

Tomcat 5.0.19 の中国語文字化けコードを完全に解決 (フィルター)

WBOY
リリース: 2016-06-21 08:59:10
オリジナル
1034 人が閲覧しました

1. インクルードされたページが文字化けする

現象: インクルードされたページが文字化けしますが、他のページは正常です。

原因: Tomcat はデフォルトで ISO-8859-1 エンコーディングを使用しますが、インクルードする場合、Tomcat は外側の .jsp ファイルのエンコーディングに従ってインクルードされたファイルを正しく解析できない場合があります。同梱ファイルに中国語が文字化けする。

解決策: ここには多くの解決策がありますが、中国環境の場合の基本的な解決策は、Tomcat 5.0.19 のコアのデフォルト エンコーディングを ISO-8859-1 から GBK に変更することです。 。変更された jar ファイルは、

jasper-compiler.jar からダウンロードできます。jasper-runtime.jar は /common/lib にあり、その他は /server/lib にあります。新しい .jar ファイル 元の .jar で十分です。

2. 送信したデータが文字化けする

現象:フォームから送信したデータが文字化けします。

原因: 理由は不明です。 Tomcat がリクエストを受信した後、リクエスト内の情報に基づいて正しいエンコード方式を事前に決定できなかった可能性があります。

解決策: フィルターを追加して文字セットを設定できます。

//================== 初心者向けの注意。このファイルを WEB-INFclassesfilters の下に配置してください。
//最初に保存してください。これを SetCharacterEncodingFilter.java としてコンパイルし、eclipse
package myAddrBook;
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;
import javax.servlet .UnavailableException;

/**
* @author Administrator
*
* TODO この生成された型アノテーションのテンプレートを変更するには、
に移動します。 * ウィンドウ - 設定 - Java - コード スタイル - コード テンプレート
*/
public class SetCharacterEncodingFilter 実装 Filter {
protected String encoding = null;
protected FilterConfig filterConfig = null;
protected booleanignore = true;

public void destroy() {
this.encoding = null;
this.filterConfig = null;
}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChainchain)
throws IOException, ServletException {

// 使用する文字エンコーディングを条件付きで選択して設定します
if (ignore || (request.getCharacterEncoding() = = null)) {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}

// 制御を渡す次の filter
chain.doFilter(request,response);

}

public void init(FilterConfig filterConfig) throws ServletException {

this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
文字列値 = filterConfig.getInitParameter("ignore");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase("true"))
this.ignore = true;
else if (value.equalsIgnoreCase("yes"))
this.ignore = true;
else
this.ignore = false;

}

protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}

}

//==================このコードはインターネットから抜粋したものです。作者がわからないため、特定できません。 thesource
// 次に、以下の で始まるコードを WEB-INF の下にある web.xml に追加します。
//My QQ: 22070699
//設定 web.xml




< ;フィルタ名>文字エンコーディングの設定
<フィルタクラス>myAddrBook.SetCharacterEncodingFilter

<パラメータ名> ;エンコーディング
GBK



< -mapping>
文字エンコーディングの設定
/*
🎜>



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