記事ディレクトリ
コーディングの文字化け問題の自己理解
コードが文字化けする理由:
リクエスト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つずつ変更しました。これが段階的に解決された理由については、私も知りたいのですが、大物が教えてくれることを願っています