- - PR -
改行コードが認識できない?
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-02-27 00:07
げっ! よい子はまねしないように... >トラジャさん、 話がそれましたけど、サーブレット側で、HttpServletRequest#getQueryString()の内容を表示した時にも、エスケープされていないんでしょうか? そもそも、URIをエスケープしないで送っている時点で、RFC2396に違反していると思うのですが... その、Flushなんとかを使わないで、普通のフォームで送った場合は、問題ないことを見せて、Flush+IEのバグであるという説明を、クライアントにされてはいかがでしょうか。 | ||||||||
|
投稿日時: 2003-02-27 00:38
うのきちさん、ありがとうございます。 パラメータは、実際には複数あるので、request.getParameter("comment")で 取り出して、その内容をSystem.outしてログに出力して確認しています。 ログをテキストエディタで確認する限りでは、IEから送信されたパラメータは 改行されずに表示されるので、改行コードが含まれていないと考えています。 HttpServletRequest#getQueryString()を使えば、URLエンコードされたままで Stringに保存できるのでしょうか?(まだ使ったことがないので) あと、システムの開発時にはHTMLでフォームを作ってパラメータのテストをして いたのですが、そのHTMLのフォームのパラメータはURLエンコードされて、ちゃんと 改行コードも含まれていました。 でも、それを言っても、なかなか納得してもらえないんですよね!(悲) FlashのフォームはUTF-8で送信しているから、それを認識できないと言われるのですが、 JavaがUTF-8を認識できないはず無いじゃないですか! はぁー でも、ご指摘のRFC2396に違反しているというところあたりを、私も良くわかっていない ところがあるので、もう少し勉強して主張してみたいと思います。 ありがとうございました。 | ||||||||
|
投稿日時: 2003-02-27 09:52
> HttpServletRequest#getQueryString()を使えば、URLエンコードされたままで
> Stringに保存できるのでしょうか?(まだ使ったことがないので) そうです。漢字とか、改行が入っていれば、%xxになります。 URIのエンコードについては、 http://www.linux.or.jp/JM/html/LDP_man-pages/man7/uri.7.html なんかが、わかりやすいと思います。「文字エンコード」というところを読んでみてください。URIの中にエスケープせずに入れていいのは、英数字と、一部の記号だけです。 ただ、漢字をエスケープする事に関しては「推奨」なので、厳密には違反にはあたらないかもしれません。でも改行コードはさすがにエスケープしなければいけないでしょう。 | ||||||||
|
投稿日時: 2003-02-27 10:11
うう。。
tryで囲むのはよろしくない方法でしょうか。 実際、このコードはサーブレットの文字やCookieを取り扱う クラスの一部として引用したものなんです。 改行コード認識するくらいなら、いちいち例外とる必要もないんですけどね。。。 引用ですみません。。 | ||||||||
|
投稿日時: 2003-02-27 22:58
こんばんは。 RuntimeExceptionっていうのは基本的に「アプリケーションにバグがある」場合にスローされるものです。例えばIndexOutOfBoundeExceptionは、ユーザがインデックスに不適切な値を指定してしまうようなバグを含んだアプリケーションを書いてしまったということになります。なので、アプリケーションがそれをキャッチして、取り繕うというのは方向が間違っていて、根本のバグを直す方向に持っていかなければなりません(あくまで、基本ルールは、ですが) 例外は、あくまでエラーの検出に使わないと、後で苦労します。例えば、try-catchでRuntimeExceptionを握りつぶすと、実は、予期していた場所とは全く違う場所で例外がスローされていたりした時に、原因不明の動きをして、わけがわからなくなります。特に後から、違う人がコードを追加したりすると、こういう事が起こることが増えます。 | ||||||||
|
投稿日時: 2003-03-02 22:40
たしかにそうですね。。
RuntimeExceptionのほとんどは コーディングで出来ますね。 hmmm。ご参考になりました。 ありがとうございました。 | ||||||||
