Webプロジェクトでブラウザの表示が文字化けすることはありますか?

Web プロジェクトの開発が初めての場合、多くの人が漢字文字化けの問題に遭遇しますが、Baidu の解決策は目まぐるしく、いくら修正を加えても問題は解決できません。文字化けしたコードはどのようにして生成されるのでしょうか? コードが文字化けする理由を知り、その基礎となる原則を理解すると、目が明るくなることに気づくでしょう。早速、下の図を見てください。
ここに画像の説明を挿入します

上の図からもわかるように

  • エンコード 1 とデコード 1 で使用されるエンコード形式は同じである必要があります
  • エンコード 2 とデコード 2 で使用されるエンコード形式は同じである必要があります

※上記2つの条件を満たしていれば文字化けは発生しませんが、この4箇所は通常UTF-8 (ユニバーサルコード)が使用されます。

コーディング設定:(上の図のシリアル番号に従って)

  1. 形状:<form id="xx" action="xx" method="xx" accept-charset = "UTF-8">

  2. サーバー エンコード形式 (リクエスト):
    Tomcat は、GET メソッドと POST メソッドによって送信された情報のエンコードを処理するためにさまざまな方法を使用します。POST リクエストの場合、Tomcat は request.setCharacterEncoding メソッドによって設定されたエンコードを使用して処理します。設定されていない場合は、の場合、デフォルトのエンコーディングが使用されます。GET リクエストは異なります。Tomcat は、GET リクエストに対して Tomcat のデフォルトのエンコーディングを一律に使用します。
    Tomcat 7 以前のバージョンのデフォルトのエンコード方式はIOS-8859-1ですが、Tomcat 8 以降では、デフォルトでUTF-8が使用されます。

    1. 受信 get メソッド
    方法 1: (使用されている文字セット エンコーディングを知っている) 最初にデコードし、次にエンコードする
    String str = new String(getParameter("message").getBytes("ISO-8859-1"),"UTF-8");

    方法 2: Tomcat 構成ファイルを変更する (非推奨)
    <Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

    2. 受信ポストメソッド
    方法1:(request.setCharacterEncoding("UTF-8") ;パラメータ取得前から有効)

    方法 2: web.xml でフィルターを構成する必要があります

<!-- post乱码过虑器 -->
   <filter>
       <filter-name>CharacterEncodingFilter</filter-name>
       <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
       <init-param>
           <param-name>encoding</param-name>
           <param-value>utf-8</param-value>
       </init-param>
   </filter>
   <filter-mapping>
       <filter-name>CharacterEncodingFilter</filter-name>
       <url-pattern>/*</url-pattern>
   </filter-mapping>
  1. 応答:
    方法 1: response.setCharacterEncoding("UTF-8");(出力ストリームで使用されるエンコーディングを設定するためにのみ使用できます)

    方法 2: response.setContentType("text/html;charset=UTF-8");(out 出力ストリーム内の文字のエンコード方法を設定し、ブラウザがこれらの文字を受信した後にデコードするために使用するエンコード方法も設定します)

  2. ブラウザに次の表示が表示されます:
    ページ ヘッダーに jsp または html を追加します<meta content="text/html; charset=utf-8" />"
    。ブラウザで開発モードを開き、コンソールで document.charset を使用して現在のページのエンコード形式を表示します。
    ここに画像の説明を挿入します

まとめ:上記4箇所のエンコード方法が同じであれば文字化けは発生しません。

Eclipseエディターの文字化けを解決します。クリックして表示します。

おすすめ

転載: blog.csdn.net/weixin_40307206/article/details/103081479