注:コンピューターに保存されているすべてのテキスト情報は、特定のエンコーディングテーブル(0、1、0、1)に私たちが知っている文字(中国語または英語の文字)を保存します。文字からコンピューターストレージまでのバイナリプロセスがエンコードされており、バイナリの読み取りからテキストまでのプロセスはデコードと呼ばれます。文字エンコード用のさまざまなエンコーディングテーブルがあります。したがって、エンコード形式とデコード形式が同じコードテーブルでない場合、Carled Codeが表示されます。文字化けしたコードを避けるには、保存して読むときに同じコードテーブルを使用する必要があります。
Java Webプログラミングには、多くの場合、文字化けされたコードがあります。さあ、文字化けされたコードを避けるためにそれらを設定する方法を詳細に説明させてください。
1つのWebページエンコーディング
Webページを作成するときは、Webページのエンコード形式を指定し、<Meta http-equiv = "content-type" content = "text/html; charset = utf-8">を使用して指定する必要があります。この時点で、ブラウザがリクエストを読み取るか送信すると、データは指定されたエンコード形式で保存または送信されます。ここでは、UTF-8の形式です。
たとえば、コードスニペット:
<form action = "/pro1/bb" method = "post"> username:<input type = "text" name "name =" username "> <br> gender:male <input type =" radio "name" name "name" lade "value =" male "> fame <input" input = "radio" input "input =" gender "value =" fame "> <br> <bron < type="checkbox" name="color" value="green"> Blue<input type="checkbox" name="color" value="blue"> <br>Countries from <select name="country"> <option value="China">China</option> <option value="US">US</option> <option value="Japan">Japan</option> </select> <br> <input type="submit" value="submit"> <input type="reset" value = "reset"> </form>
2バックエンド読み取りリクエストデータ
Java Webのサーブレットでは、要求されたデータを取得するために、送信されるバイナリデータを対応するコードテーブルに従ってデコードする必要があります。この例では、POSTメソッドが使用されるため、POSTリクエストを処理するときは、中国のリクエストパラメーターを取得する前にエンコード形式を設定する必要があります。なぜなら、サーバーは、デコードのためにデフォルトでISO-8859-1エンコードテーブルを使用するためです。
もちろん、出力に漢字を出力する場合は、統一された文字エンコードも使用する必要があります。 UTF-8は次のとおりです。コードは次のとおりです
public void dopost(httpservletrequest request、httpservletresponse応答)servletexception、ioexception {request.setcharacterencoding( "utf-8"); Response.setContentType( "text/html; charset = utf-8"); printwriter out = response.getWriter(); string username = request.getParameter( "username"); string gender = request.getParameter( "gender"); string [] colors = request.getParametervalues( "color");文字列country = request.getParameter( "country"); out.println( "<!doctype html>"); out.println( "<head> <title>テストサーブレット</title> </head>"); out.println( "<body>"); out.print( "<h1>以下は入力</h1>"); out.print( "<p>"); out.print( "your username:"+username+"<br>"); out.print( "your gender:"+gender+"<br>"); out.print( "お気に入りの色:"); for(string cr:colors){out.print(cr+""); } out.print( "<br>"); out.print( "your Country:"+country+"<br>"); out.print( "</p>"); out.println( "</body>"); out.println( "</html>"); }注:request.setcharacterencoding( "utf-8");ここでは、要求エンティティのコンテンツに対してのみ有効です。 POSTリクエストパラメーターはリクエストエンティティに保存され、GETメソッドのリクエストパラメーターはURLの後に配置され、疑問符で開始され、複数のパラメーターを接続します。したがって、GETメソッドのパラメーターを取得する場合は、手動デコードを使用するか、フィルターを使用する必要があります。
手動デコード方法、単純さのために、性別のデコードのみ、および実際の使用では、各パラメーターをデコードする必要があります。StringGender= new String(req.getParameter( "gender")。
この時点で、Webとサーバーの側面に文字化けされた漢字の現象は完全に解決できます。一つのことを覚えておいてください。一方では、エンコードとデコードが異なるエンコードテーブルを使用しているためです。問題を解決するには、同じエンコードテーブルを使用する必要があります。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。