通常、一度エンコードしてからパラメータを直接受け入れます。
String para = request.getParameter(paramName); これは、コンテナが自動的にデコード (DECODE) できるためです。
一般的にエンコード時はUTF-8(システムエンコード)を使用しますが、デコード時もUTF-8を使用すると伝説の文字化けは出なくなりますよ~。
ただし、JSP ページでは UTF-8 が使用されているが、コンテナのデコード時に他のエンコーディングが使用されている場合、文字化けが発生する可能性があります。
現時点では、通常は次のものを使用できます。
String param = new String(request.getParameter(paramName).getBytes("ISO-8859-1"),"UTF-8");
出てくることもあります。
あらゆる手段を試しましたが、それでも分からない場合はどうすればよいですか?
複数のサーバーが原因で発生するこのエンコードの問題を解決する方法:
文字列を想定します: = "Yang";
1 回エンコード%E9%98%B3
2 回エンコード%2525E9%252598%2525B3
2 回目では、今度はコンテナーが自動的にデコードし、GBK、UTF-8、ISO-8859-1 のいずれであっても、%E9%98%B3 を正しく取得できます。
その後、一度デコードを実行すれば「陽」を取得できます。