エンコードの文字化けの問題の説明、Tomcatの文字化けを解決するための最速かつ最も効果的な方法。[私を訂正したい]

コーディングの文字化け問題の自己理解

コードが文字化けする理由:
  リクエストURLはブラウザエンコーダーでエンコードする必要があります---->サーバーに送信してからデコーダーをデコードします->エンコードとデコードの方法に一貫性がなく、文字化けの問題が発生します。

username = 帝峰文字化けした問題に対処するために、ページからパラメータを渡します

@RequestMapping(path="testEncode")
    public String testEncode(String username) throws Exception{
    
    
	//直接输出结果是username = %E5%B8%9D%E5%B3%B0
	System.out.println("username = " + username);
	
    //查看浏览器请求域,发现username = 帝峰 这两个字被utf-8编码变成了%E5%B8%9D%E5%B3%B0
	//我们可以通过URLDecoder.decode解码(UTF-8编码)来解决中文乱码问题
        //String decodeName= URLDecoder.decode("%E5%B8%9D%E5%B3%B0","UTF-8");
        String decodeName= URLDecoder.decode(username,"UTF-8");
        //解码输出正常 username = 帝峰
        System.out.println("username = " + decodeName);
        return "requestmappingsuccess";
    }

上記の種類URLDecoder.decode()のデコードは、エンコードプロセスで使用したエンコードの種類がわからないため、明らかに私たちのニーズを満たしていません。また、毎回このように記述するのは非常に面倒です。

プログラムの実行プロセスを理解しましょう[問題があると思います。修正してください]

jspページ—>変換後(pageEncodingエンコーディングを使用)、それはサーブレットストレージなりますjsp変換がサーブレットとして実行された後)—>javacコンパイルを介して(javacコンパイルは2バイトを占めるutf-8エンコーディングを使用します。これはUnicodeです。 utf-8)はservlet.classバイナリファイルになります—> tomcatサーバーに渡します(tomcatはデフォルトでiso8859-1エンコーディングを使用します。エンコーディングの一貫性を確保するには、utf-8に変更する必要があります)—>Controller等プログラムに渡し、エンコーディングontentType="text/html;charset=UTF-8"をUTF-8に設定します。—>クライアントへ—>次にjspページへ—>pageEncoding="UTF-8"デコードを通じてユーザーにページをレンダリングします。

[上記の要約は私自身の要約です。いくつかの間違いがあるように感じます。次の点は、私が
簡単に変更できることを示しています。かわいい新しいものです〜]文字化けしたコード解決する最も簡単な方法は、実行ステップの各ステップが同じエンコード形式であることを確認することです。これは、すべての環境コードの一貫性を確保するためです。

Tomcatサーバーコンソールの文字化けした出力を解決する最も簡単な方法:

文字化けした文字のスクリーンショット

ここに写真の説明を挿入

解決

  tomcatディレクトリの下のconfディレクトリにあるlogging.propertiesファイルを変更します第47行,将UTF-8改为GBK

ここに写真の説明を挿入

ここに写真の説明を挿入

[まとめ-疑問]

文字化けしたコードを解決するために、元のコードを1つずつ変更しました。これが段階的に解決された理由については、私も知りたいのですが、大物が教えてくれることを願っています

おすすめ

転載: blog.csdn.net/qq_40542534/article/details/109082850