- PR -

Servletの文字化け

投稿者投稿内容
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2003-03-25 19:49
引用:

http://xxx.xxx.xxx/dic/servlet/TestGet?MY2=a%82%A0aでリクエストすると両ブラウザとも正常に表示されます。
(NSのほうはaあaで渡すと自動的にa%82%A0aと変換してくれます)
但し、パラメータは他のURLからaあaの形で受け取りますので、エンコードできない状態です。


水を差すようですが、、、、
ブラウザのクエリーのエンコーディングに頼ると
思わぬ弊害を引き起こします(体験談です)

基本的に<form action="XX" method="get">で
送信すればエンコーディングされて送信されるはずです。

もしくは<a href="XXX?param=aあa">としなければいけないのであれば、
JSPなどで
<a href="XX?param=<%=response.encodeURL("aあa")%>">と
するべきです。

MY2=a%82%A0aで両ブラウザともOKだったのであれば、
上記のコードで対応できますよね。

クエリーストリングに全角文字をそのままぶちこんでは
いけません。
yuzy
大ベテラン
会議室デビュー日: 2002/02/14
投稿数: 117
投稿日時: 2003-03-25 20:40
http://www.ietf.org/rfc/rfc2396.txt
を見る限り全角の文字をURLの中に埋め込むことは禁止されています。

禁止されている行為をやっているわけですから、動かなくて当然でしょう。
他の方が言われているように encode してから送信すべきです。
(私の場合は java.net.URLEncoder.encode()を使っています。)
Hide
会議室デビュー日: 2003/02/25
投稿数: 11
投稿日時: 2003-03-28 15:45
色々アドバイスを頂いて、有難うございます。
確かに全角の文字をURLの中に埋め込むことは正しくない運用です。(反省します)

今回のことで下記の情報を得ました。
1)全角の文字をURLの中に埋め込む運用は避けるべきです。
2)Redhat+Apache+Tomcatの環境では1)の運用が文字化けします。<=テストしました
3)但し、Windows+Apache+Tomcatの環境では、1)の運用が文字化けしません。<=テストしました
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2003-03-28 18:24
引用:

今回のことで下記の情報を得ました。
1)全角の文字をURLの中に埋め込む運用は避けるべきです。



正しくは
全角文字をURLに埋め込みたい場合はエンコードしてから
埋め込む。
ということです。

スキルアップ/キャリアアップ(JOB@IT)