Javaの文字化け対策
Javaでのパラメータ渡しで、URLエンコードは確かにした方がいいです。
ただしURLエンコードデータをサーバーに送る際、
サーブレットサーバーの環境によって結果が変わってきます。
Tomcat側の対応方法ですが、
そのテスト環境のserver.xmlにConnectorタグがあると思いますが、
(別HTTPサーバーとの連携でAJP利用の場合はprotocol属性の値がAJPの方のConnectorタグ。
Tomcat付属のHTTPサーバー利用の場合はprotocol属性の値がHTTPの方のConnectorタグ)
そこに新たに「URIEncoding」属性を追加してみてください。
追加した属性の値は、URLエンコードする側(今回で言えばJSP側)のエンコードタイプ
を指定してください。
これでサーバーを再起動すればうまく表示されると思います。
他のサーブレットサーバーを利用している場合もおそらく
エンコードタイプの指定があると思います。
///////////////////////////////////////////
サーバー環境はTomcatでエンコードタイプはWindows-31Jでした。
解決方法ですが、JavascriptのURLエンコードではJava側で幾つかの文字がエンコードされなかったので
送信側のJSPにてJavaのロジックを用いてWindows-31JでURLエンコードするようにしました。
これで文字化けすることなく処理できるようになりました。
■修正後
<%@ page import = "java.net.URLEncoder" %>
<%
//Firefox文字化け対策(URLエンコード)
String key = URLEncoder.encode(★エンコードする変数, "Windows-31J");
%>
Javaのエンコード、デコードを用いる事で、Javascriptなど異なる言語のエンコードとの相違を元から排除する形ですね。
ただしURLエンコードデータをサーバーに送る際、
サーブレットサーバーの環境によって結果が変わってきます。
Tomcat側の対応方法ですが、
そのテスト環境のserver.xmlにConnectorタグがあると思いますが、
(別HTTPサーバーとの連携でAJP利用の場合はprotocol属性の値がAJPの方のConnectorタグ。
Tomcat付属のHTTPサーバー利用の場合はprotocol属性の値がHTTPの方のConnectorタグ)
そこに新たに「URIEncoding」属性を追加してみてください。
追加した属性の値は、URLエンコードする側(今回で言えばJSP側)のエンコードタイプ
を指定してください。
これでサーバーを再起動すればうまく表示されると思います。
他のサーブレットサーバーを利用している場合もおそらく
エンコードタイプの指定があると思います。
///////////////////////////////////////////
サーバー環境はTomcatでエンコードタイプはWindows-31Jでした。
解決方法ですが、JavascriptのURLエンコードではJava側で幾つかの文字がエンコードされなかったので
送信側のJSPにてJavaのロジックを用いてWindows-31JでURLエンコードするようにしました。
これで文字化けすることなく処理できるようになりました。
■修正後
<%@ page import = "java.net.URLEncoder" %>
<%
//Firefox文字化け対策(URLエンコード)
String key = URLEncoder.encode(★エンコードする変数, "Windows-31J");
%>
Javaのエンコード、デコードを用いる事で、Javascriptなど異なる言語のエンコードとの相違を元から排除する形ですね。