Struts中国語文字化けし


j 2 eeの開発の過程で、中国語が文字化けしているのは普通のことで、個人的に以下の3つの状況をまとめました.
 
1ページは中国語の文字化けして2パラメータの中国語の文字化けして3国際化の資源のファイルの文字化けしていることを表示します
 
これらの文字化けし問題を具体的な項目でどのように処理するかについて説明します.全体の処理思想については、UTF-8と統一的に符号化する.(myeclipse 6でサポートされているstruts 1.3に準拠)
ページに中国語の文字化けが表示されているページに文字化けが表示されている場合、この問題は簡単です.あなたのJSPファイルに中国語が表示されているかどうかをチェックすることです.JSPのデフォルトの符号化フォーマットは「ISO-8859-1」なので、JSPに処理する中国語が表示されている場合、その表示は文字化けになります.このような状況は一般的に手書きJSPや修正時に発生します.myeclipse 6で0で符号化エラーが発生した場合、プログラムは保存されず、符号化に注意するよう促すのがいいです.具体的な修正方法は
<%.@ page language="java" import="java.util." pageEncoding="ISO-8859-1">  

変更:
<%.@ page language="java" import="java.util." pageEncoding="UTF-8"> 

 
二伝達パラメータ中国語文字化けし伝達パラメータに現れた文字化けし、パラメータの内容は中国語である.例えばstrutsアプリケーションでは、簡単なログインインタフェースで、転送するログイン名が中国語である場合、あなたが処理しない前に、文字化けが発生します.表示されている文字化けを見るために、対応するActionクラスのサブクラスで、修正してSystemを使います.outは受け取ったパラメータを出力し、コードは以下の通りです.
	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,   
	        HttpServletResponse response) ...{   
	    DynaActionForm loginForm = (DynaActionForm) form;   
	  
	    String username = (String) loginForm.get("username");   
	    String password = (String) loginForm.get("password");   
	    System.out.println("username:"+username);   
	    System.out.println("password:"+password);   
	    if (username.equals("ivorytower") && password.equals("123456")) ...{   
	        return mapping.findForward("success");   
	    }   
	    return mapping.findForward("fail");   
	    } 

 
 
では、中国語入力を提出すると文字化けしてしまいます.具体的な解決方法:1 Tomcat---->conf---->serverを修正する.xmlファイルは、ポートを変更するラベルの後ろにコードを1行追加します.次のようにします.
	<Connector port="8080" protocol="HTTP/1.1"    
	              connectionTimeout="20000"    
	              redirectPort="8443"  URIEncoding="UTF-8"/>

 
②フィルタ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 ...{   
	  
	    @Override  
	    public void destroy() ...{   
	    }   
	  
	    @Override  
	    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,ServletException   {   
	    request.setCharacterEncoding("utf-8");   
	    chain.doFilter(request, response);   
	    }   
	  
	    @Override  
	    public void init(FilterConfig arg0) throws ServletException ...{   
	    }   
	  
	}  

 
フィルタを用いて,requst伝達の中国語パラメータをすべて「UTF-8」符号化する.③webを修正する.xmlファイルはプロジェクトのwebを開きます.xmlファイルには、次のコードが追加されています.
	<filter>  
	<filter-name>characterEncoding</filter-name>  
	<filter-class>com.v512.example.CharacterEncodingFilter</filter-class>  
	</filter>  
	<filter-mapping>  
	<filter-name>characterEncoding</filter-name>  
	<url-pattern>/*</url-pattern>  
	</filter-mapping>  

 
 
 
 
 
なお、フィルタされたURLは「/*」であり、現在のrequestリクエストを表す.設定を有効にするためにtomcatを再起動します.3国際化資源ファイルの文字化けし①JDKのnative 2 asciiツールを利用して符号化変換国際化問題を行い、主にファイルのブラウザでの表示問題を処理するためなのか、それともログインインタフェースで言えば、例えば中国語ブラウザで、私たちは中国語の表示を見て、英語ブラウザで英語を表示することに対応する.では、そのインタフェースにログインする処理では、私たちの「ユーザー名」「パスワード」などのIDを直接書くことはできません.タグで出力を変換します.次のように変更します.
<bean:message key="example.login.username"/> 

 
さらに、プロジェクトの下にあるリソースプロファイルを開きます.propertiesは、上記のkey値に基づいて、デフォルト値(英語を表示)に設定します.
参照
      #Resource for Parameter 'com.v512.example.struts.ApplicationResources #Project webexample2 example.login.username=username example.login.password=password
ここでは、中国語を直接Ctrl+C、Ctrl+Vで表示できるように、リソースファイルを新規作成します.ApplicationResourcesと名前を変更zh.properties、コードは以下の通りです.
参照
       #Resource for Parameter 'com.v512.example.struts.ApplicationResources #Project webexample2 example.login.username=ユーザ名example.login.password=パスワード
しかし、保存するとmyeclipseがエラーを報告します.この場合、リソースファイルの符号化フォーマットを変更する必要があります.Windons---->Preferences------>Content Type------>Text------>JavaPropertiesFile、そのDefault encodingを「utf-8」に変更し、「update」を押して更新します.これで保存できます.しかし、私たちが検証に成功したかどうかは、まだ文字化けしています.急いでいません.DOSウィンドウを開き、CMDをリソースファイルのあるディレクトリに開き、JDKのnative 2 asciiツールを使用して新しいリソースファイルをbankなどの別の名前のリソースファイルに変更しなければなりません.properties.コマンドは次のとおりです.
参照
     >native2ascii -encoding gbk ApplicationResources_zh.properties bank.properties
開けてpropertiesリソースファイル、自動生成コードは以下の通りです.
参照
      #Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) example.login.username =\u7528\u6237\u540D example.login.password =\u5BC6\u7801
そしてmyeclipseウィンドウで、元の新しいApplicationResources_をzh.propertiesを削除しbank.propertiesをApplicationResourcesに変更zh.properties(記憶を容易にするため、管理).その後tomcatを再起動したりreloadファイルを実行したりすると、文字化けして問題がないことがわかりました.②Eclipse ResourceBundle Editorプラグインを利用する以上、JDKのnative 2 asciiツールを利用して国際化問題を処理していますが、ECではjavaを編集するリソースファイルの国際化文字化問題、すなわちEclipse ResourceBundle Editorプラグインを処理するのに便利なツールがあります.このプラグインをインストールすると、リソースファイルの編集を容易に可視化できます.おすすめです.