ホームページ  >  記事  >  Java  >  jspの中国語文字化けの対処方法

jspの中国語文字化けの対処方法

零到壹度
零到壹度オリジナル
2018-03-21 15:28:102027ブラウズ

Java、C 言語、Python (およびそれ以上) を含むほとんどの開発プラットフォームは、コード開発のプロセスでほぼすべて中国語を使用します。コンピューターがこれらの処理を行う場合、ユーザーが書き込んだ内容を認識することはできません。データはエンコードされ、コンピューターが認識して実行できる言語に変換されます。コンパイルされたコードが逆コンパイルされない場合、理解できない意味不明な文字列が表示されることになります。

まず、コード化けがなぜ発生するのかを理解する必要があります。

データの送受信時にサーバーはどのようにデータをエンコードしますか?
1.サーバーはデータを送信します
データを送信する際、サーバーはresponse.setCharacterEncoding—contentType—pageEncodingの優先順位に従って送信するデータをエンコードします。
2. サーバーがデータを受信する
データを受信する状況は 3 つあります。 1 つは URL を使用してブラウザーから直接送信されるデータであり、他の 2 つはフォームの GET および POST メソッドを使用して送信されるデータです。さまざまな WEB サーバーでこれら 3 つのメソッドの処理方法が異なるため、Tomcat5.0 を例として取り上げます。
①フォームでPOST送信したデータの場合
JSPページでresponse.setCharacterEncodingまたはcontentTypeまたはpageEncodingが「utf-8」に設定されていれば、JSP/SERVLETで中国語の文字化けは発生しませんデータに関する質問を受け入れます。
② URLで送信されたデータと、フォームのGETメソッドで送信されたデータの場合
データを受け取るJSP/SERVLETにrequest.setCharacterEncodingパラメータを設定するだけでは不十分です
Tomcat5.0では、デフォルトでは ISO-8859-1 を使用して、URL によって送信されたデータとフォームの GET によって送信されたデータを再エンコード (デコード) します。 この問題を解決するには、Tomcat の構成ファイル サーバーの Connector タグに UseBodyEncodingForURI を設定する必要があります。 .xml または URIEncoding 属性。URIEncoding パラメーターは、すべての GET リクエスト (URL によって送信されたデータおよびフォームの GET メソッドによって送信されたデータを含む) の均一な再コーディング (デコーディング) のエンコーディングを指定します。
useBodyEncodingForURI パラメータは、URL によって送信されたデータとフォームの GET メソッドによって送信されたデータを再エンコードするために request.setCharacterEncoding パラメータを使用するかどうかを示します。 URIEncoding と useBodyEncodingForURI の間の違いは、URIEncoding がすべての GET リクエストのデータを均一に再エンコード (デコード) するのに対し、useBodyEncodingForURI はリクエストに応答するページの request.setCharacterEncoding パラメータに従ってデータを再エンコード (デコード) することです。異なる再コード化 (デコード) エンコーディングを使用できます。したがって、URL によって送信されたデータとフォームの GET メソッドによって送信されたデータについては、URIEncoding パラメーターをブラウザーのエンコーディングに変更するか、useBodyEncodingForURI を true に変更して、データが保存されている JSP ページで request.setCharacterEncoding パラメーターをブラウザーのエンコーディングに設定することができます。得られた。

JSP を送信するときにコードが文字化けする問題については、まず、コードが文字化けした理由を理解する必要があります。

JSP ヘッダー ファイルを見てください: <%@ page contentType="text/html;charset=UTF-8" language="java"%>

このヘッダー ファイルには、エンコーディングに関連する属性: pageEncoding

まず、JSP/サーブレットにおけるいくつかのエンコーディングの機能について説明します。

JSP/Servletでは主にpageEncoding="UTF-8"、contentType="text/html;charset=UTF-8"、request.setCharacterEncoding("UTF-8")のエンコーディングを設定する箇所があります。 8 ") と response.setCharacterEncoding("UTF-8") です。最初の 2 つは JSP でのみ使用でき、後の 2 つは JSP とサーブレットで使用できます。
request.setCharacterEncoding("UTF-8") は、クライアントが要求したエンコーディングをサーバー側で再エンコードするために設定するために使用されます。このメソッドは、ブラウザから送信されたデータを再エンコード (またはデコード) するときに使用するエンコードを指定するために使用されます。
response.setCharacterEncoding("UTF-8") は、クライアント側でサーバー応答を再エンコードするために使用されるエンコーディングを指定するために使用されます。
このエンコーディングは、サーバーがデータをブラウザに送信する前に再エンコードするときに使用されます。

WEBサーバーとしてTomcat7.0を使用した場合の中国語文字化けを防ぐ方法をまとめました。
1. 同じアプリケーションの場合は、統一されたエンコーディングを使用することが推奨されますが、もちろん GBK も使用できます。
2. JSPのpageEncoding="UTF-8"を正しく設定します
3. contentType="text/html;charset=UTF-8"またはresponse.setCharacterEncoding("UTF-8")を設定することで間接的に設定します。ブラウザのエンコーディング。
4. フォームで送信されない get または URL リクエストの場合は、Tomcat のデフォルト設定を変更するか、useBodyEncodingForURI パラメーターを UTF-8 に設定することをお勧めします。他のアプリケーションに影響を与える可能性があるため、お勧めできません)。または、データ受信時の処理として以下のメソッドを使用します:
request.getParameter("userID")、userIDの値を取得
request.getParameter("userID").trim() の両側のスペースを削除この値
request.getParameter("userID").trim().getBytes("ISO-8859-1")) ISO-8859-1 を使用してこの String をバイト番号にエンコードします
new String(request . getParameter("userID").trim().getBytes("ISO-8859-1"),"utf-8") 先ほどのバイト数を文字列コンストラクターに渡して、「utf-8」に従って文字列を作成します" エンコード文字列オブジェクト。
5. URLEncoder の使用方法
パラメータを渡す前に使用します:
//指定されたエンコード機構を使用して文字列を application/x-www-form-urlencoded 形式に変換します
String username_encoder = URLEncoder。 encode(username, "UTF-8");
パラメータを受け取った後、表示します:
//指定されたエンコード機構を使用してアプリケーションをデコードします/x-www-form-urlencoded string
String username_decoder = URLDecoder .decode(request.getParameter("ユーザー名"),"UTF-8");

以上がjspの中国語文字化けの対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。