- ベストアンサー
FORMからGETした情報の取得方法を教えてください
- 最近Javaを勉強し始めました。FORMからのGETの取得方法がわかりません。
- GETした文字列が「徹底」でSJISのURI。Java側のコードだけで解決する方法を教えていただけないでしょうか?
- 環境はJDK 1.5.0_14、Tomcat 5.5.25、MySQL 5.0.45、DB内文字コードはcp932
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
String strSearchQuery = request.getParameter("sq"); //検索文字列 の後、 strSearchQuery = new String(strSearchQuery.getBytes("8859_1"),"Windows-31J"); でうまくいきましたので、試してみてください。
その他の回答 (2)
- thamansa
- ベストアンサー率40% (95/232)
http://www.cresc.co.jp/tech/java/Servlet_Tutorial/Lesson_26.htm に化ける理由が解説してありましたのでぜひご参照ください。
- thamansa
- ベストアンサー率40% (95/232)
デコードしたSJISの文字コードをStringに変換するところで 間違った文字コードとして処理しているような気がします。 >そこでdecodeURL等試してみたのですが何も変わりません。 > >*GETした文字列が「徹底」でSJISのURIだと「%93O%92%EA」です。 >上記のように書き出したところ「?O??」と出力されたのでURIエン >コードされたまま渡されていると推測しました。 の部分をもう少し詳しく説明してもらえますか?
補足
ご返答ありがとうございます。 まずフォームからテキストボックスに「徹底」という文字列を入力しサブミットしました。 受け取ったページのアドレスは下のようになります。 hoge.jsp?sq=%93O%92%EA&sf=1 そしてGETした文字列をstrSearchQueryに入れました。 String strSearchQuery = request.getParameter("sq"); //検索文字列 この時点でデバッグのため<%=strSearchQuery%>のように書き出したところ「?O??」と表示されました。 「%93O%92%EA」をブラウザが「%93 O %92 %EA」のように分けて表示しようとしているのだと思います。 ここまでではURLエンコードされたままのように思います。 その後、デコードをしてstrDecodedQueryとしました。 String strDecodedQuery = java.net.URLDecode.decode(strSearchQuery); ここでもう一度<%=strDecodedQuery%>のように書き出しましたが、依然表示されるものは「?O??」でした。
お礼
うまくいきました!! getBytes関数も調べてみますね。 詳細な説明のリンクもありがとうございます!