中国の文字化けコードの問題は、特にフロントデスクからバックデスクに送信された後、非常に難しい問題です。問題がどこにあるのかわかりません。今、私たちは、Javawebの正面および裏面で文字化けされた中国人の問題を解決するための3つの方法を共有しています。
方法1:
Tomcat自身のエンコードはISO-8859-1の形式であり、中国のエンコーディングと互換性がありません。したがって、バックグラウンドから受信するときは注意を払う必要があります。
同じ形式を使用して(ISO-8859-1)を受信し、解析可能なエンコード(UTF-8)で変換します。このようにして、中国の互換性のある形式を取得できます。この処理の後、フロントデスクに送信します。注:前景に送信するときは設定する必要があります
resp.setContentType( "text/html; charset = utf-8"); //ページの文字エンコードを設定して、インターフェイス上の文字化けの中国テキストの問題を解決します。
保護されたvoidサービス(httpservletrequest req、httpservletresponse resp)servletexception、ioexception {// tomcatにはエンコードISO-8859-1形式が付属しているため
// Carled Code <Span Style = "Pre"> </span> String name = req.getParameter( "username"); </span> string pwd = req.getParameter( "pwd"); // Tomcat形式(ISO-8859-1)を使用して読み取りに使用します。 <span style = "ホワイトスペース:pre"> </span> string str = new String(b、 "utf-8"); // utf-8を使用してstring <span style = "white-space:pre "> </span> resp.setContentType(" text/html; charset = utf-8 "); //ページの文字エンコードを設定<span style =" white "> </span>
<span style = "ホワイトスペース:pre"> </span> printwriter pw = resp.getwriter(); > <font size = '5px' color = 'red'> username: "+name+" pwd: "+pwd+" </font> </body> </html> "; <span style ="ホワイトスペース:pre "> </span> pw.print(str1); printwriter pw = resp.getwriter(); string str1 =" <html> <body> <font size = '5px' color = 'red'> username: "+name +"pwd:"+pwd+"</font> </body> </html>";
方法2:
この方法は複雑であるため、簡単な設定が使用されます。単純な文
req.setcharacterencoding( "utf-8"); //この方法はデータの読み取りに使用されるため、最初に記述する必要があります。そうしないと、データが正しくありません。
このように、以前と同じように面倒なセットアップする必要はありません
保護されたボイドサービス(httpservletrequest req、httpservletresponse resp)servletexception、ioexception {//エンコードに付属するため、ISO-8859-1フォーマット//はISO-8859-1フォーマット// 2つの「2つの」メソッド「よりcumbersome」》 req.setcharacterencoding "); //この方法はデータの読み取りに使用されるため、最初に記述する必要があります。そうしないと、データが正しくありません。 //この方法を読み取りに設定します。これにより、中国語を読むことができますが、注意が必要です。フォームは<span style = "color:#ff0000;"> method = 'post' </span> resp.setcontenttype( "text/html; charset = utf-8"); //渡されます。ページ文字列に表示されるエンコード= req.getParameter( "username")= req.getParameter( "pwd"); font size = '5px' color = 'red'> username: "+name+" pwd: "+pwd+" </font> </body> </html> "; pw.print(str1);
方法3:
これは、2つのダルマに基づいて変更されます。ユーザーが間違いなく変更しないことを考慮して、エンコード形式を読み取ることができますが、ユーザーが構成ファイルを変更できるようにするために、より一般的な方法を採用する必要があります。つまり、web.xmlファイルは、web.xmlのコンテンツを変更する必要があります。つまり、文字エンコードはxmlから受信されます。 XMLファイルの構成パラメーターが必要です。
コードは次のとおりです。
<Servlet> <Servlet-Name>エンコード</servlet-name> <servlet-class> cn.hncu.com.encode.encodeing </servlet-class> <init-param> <param-name> charset </para m - name> <param-value> utf-8 </param-value> //ここの内容はユーザーが埋めることができます(エンコード形式である必要があります)</init-param> </servlet>
フォアグラウンドと背景の交換は、web.xmlの設定のパラメーターを取得する必要があることを知っています。
public void init(servletconfig config)は、servletexception {charset = config.getinitParameter( "charset"); //初期化パラメーターを取得します。もちろん、charsetはグローバル変数として設定する必要があります。後続のサービス関数は、req.setcharacterencoding(charset)を設定する必要があります。
req.setcheracterencoding(charset); pw = resp.getwriter(); string str1 = "<html> <body> <font size = 'color =' red '> username:"+name+"pwd:"+pwd+"</font> </body > </html> "; pw.print(str1);
解決済みレンダリング:
解決する前に:
解決後:
フロントデスクコード:
<body> <form action = "login" method = "post"> //ログインはweb.xmlで構成されており、データのユーザー名は背景で読み取ることができます:<input type = "text" name = "username "/> <br/>パスワード:<入力タイプ="パスワード "name =" pwd "/> <br/> <入力タイプ=" submit "value =" login "/> </form> </body>
上記は、ジャヴァウェブの前後のオフィスで文字化けされた中国人の問題を解決するための3つの方法です。