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
// 次に、以下の
//My QQ: 22070699
//設定 web.xml
< ;フィルタ名>文字エンコーディングの設定フィルタ名>
<フィルタクラス>myAddrBook.SetCharacterEncodingFilterフィルタクラス>
<パラメータ名> ;エンコーディング
< -mapping>
🎜>