- - PR -
javaとjspのrequest値処理について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-10-31 14:19
画面の入力フォームで,"&"などの半角記号をPOSTし(下記処理参照),
javaとjspで各々getParameterにて取得した際に,以下の事象が発生します。 ・処理 --------------------------------------------- 画面A (POST)→ JAVA* → 画面B* *の処理時に以下の記述をし,requestの値を取得している String prm = request.getParameter("key"); ※画面Aと画面Bの文字コードはShift_JIS --------------------------------------------- ・事象 ********************************************** 入力値:「89&jhgt」 ・java:「89」 "&"以降の文字列がカットされた形で取得される。 ・jsp:「89&jhgt」 入力フォームで入力された値をそのまま取得できる。 ********************************************** javaで上手く取得できない原因は,javaは全てUnicodeで処理するため Unicodeにエンコードする際に,取得値が切捨てられてしまうからでしょうか。 逆にjspで取得可能な理由としては,Unicodeにエンコードする必要がないためでしょうか。 ご教授お願い致します。 | ||||
|
投稿日時: 2007-11-01 07:50
javaもjspも同じjavaですが・・・
jspはまんまservletに変換されますので | ||||
|
投稿日時: 2007-11-01 13:27
ご返答ありがとうございます。 無知で恥ずかしい限りです。 継続して調査しておりますが未だ解決できません。 原因が特定できるまで調べたいと思います。 | ||||
|
投稿日時: 2007-11-02 15:03
URLエンコードが正しく行われてないのでは。
&はQUERYの区切り記号なため%26に変換されているはずです。 HTTPリクエストより抜粋。 Content-Type: application/x-www-form-urlencoded Content-Length: 24 key=89%26jhgt&other=hoge getInputStream() で読んでみたら何かわかるかも知れません。 ちなみに入力しているウェブブラウザは何を使っているのでしょうか? JavaとはJavaServletのことだと思いますが、ServletEngineは何を使っているのでしょう? | ||||
|
投稿日時: 2007-11-06 15:36
文字コードかなぁと思ったりでして。
こちらはブラウザ依存やらでjspのキャラクタセットが、 単にShift_JISであっていたから問題ないのかなと思いました。 コード的には以下の様なもので、javaでも参照出来るかなと。 jspへの文字コード指定も、明示的に行ったりすると思いますので。 /******************************************************/ //(1)エンコード方式の指定 res.setContentType("text/html; charset=Windows-31J"); //(2)パラメータのエンコード方式の指定 req.setCharacterEncoding("Windows-31J"); /******************************************************/ リクエストのエンコーディング指定をした後に、 サーブレット内で出力したら大丈夫かなと思ったりです ※未確認で申し訳ないです…。 |
1