• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:FORMからGETした情報の取得方法を教えてください。)

FORMからGETした情報の取得方法を教えてください

このQ&Aのポイント
  • 最近Javaを勉強し始めました。FORMからのGETの取得方法がわかりません。
  • GETした文字列が「徹底」でSJISのURI。Java側のコードだけで解決する方法を教えていただけないでしょうか?
  • 環境はJDK 1.5.0_14、Tomcat 5.5.25、MySQL 5.0.45、DB内文字コードはcp932

質問者が選んだベストアンサー

  • ベストアンサー
  • thamansa
  • ベストアンサー率40% (95/232)
回答No.2

String strSearchQuery = request.getParameter("sq"); //検索文字列 の後、 strSearchQuery = new String(strSearchQuery.getBytes("8859_1"),"Windows-31J"); でうまくいきましたので、試してみてください。

tgenstake
質問者

お礼

うまくいきました!! getBytes関数も調べてみますね。 詳細な説明のリンクもありがとうございます!

その他の回答 (2)

  • thamansa
  • ベストアンサー率40% (95/232)
回答No.3

http://www.cresc.co.jp/tech/java/Servlet_Tutorial/Lesson_26.htm に化ける理由が解説してありましたのでぜひご参照ください。

  • thamansa
  • ベストアンサー率40% (95/232)
回答No.1

デコードしたSJISの文字コードをStringに変換するところで 間違った文字コードとして処理しているような気がします。 >そこでdecodeURL等試してみたのですが何も変わりません。 > >*GETした文字列が「徹底」でSJISのURIだと「%93O%92%EA」です。 >上記のように書き出したところ「?O??」と出力されたのでURIエン >コードされたまま渡されていると推測しました。 の部分をもう少し詳しく説明してもらえますか?

tgenstake
質問者

補足

ご返答ありがとうございます。 まずフォームからテキストボックスに「徹底」という文字列を入力しサブミットしました。 受け取ったページのアドレスは下のようになります。  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??」でした。

関連するQ&A