JavaWebアプリケーションにおける完全な文字化けソリューション

1383 ワード

せいてきせいぎょ
1,JSPヘッダで宣言:
<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8" %>  

2,Jspのhtmlコードの中で、UTF-8を宣言します:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">  

3、データベース接続方式はUTF-8に設定します.例えばMYSQLに接続する際の構成URLは以下の通りです.
jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8  

どうてきせいぎょ
ブラウザから送信されたリクエストパケットは、ブラウザが存在するオペレーティングシステムに基づいて符号化され、様々な形式で符号化される可能性があるため、すべてのブラウザからのリクエスト(request)をutf-8に変換する.重要な一言:
request.setCharacterEncoding("utf-8") 

なお、以上の方式はpost方式のみに有効であり、get方式には無効である.
get方式で値を渡す場合の一時的な解決策
String strDisplay = new String(strParm.getBytes("ISO8859-1"), "utf-8");  

get方式で値を転送する際の完全なソリューション-サーバ側の変更
tomcatルートディレクトリにconfディレクトリを見つけ、server.xmlでノードが見つかり、次のように変更されます.
<Connector port="8080" protocol="HTTP/1.1"   
           connectionTimeout="20000"   
           redirectPort="8443"  
           URIEncoding="utf-8" /> 

赤字部分を加えると,get方式で値を伝達する際の文字化けし問題を完全に解決できる.ただし、このようなシナリオはサーバ自体の設定の変更であるため、他のプログラムの実行に影響します.