MacとJavaと映画と


最近のエントリー


最近のレスポンス
Re: それでも僕はやっていない
確かに、ラストの落としどころは良いですね...

Re: それでも僕はやっていない
ボクもこないだ観たよ~。 いや~、怖いね、満員電車。 ラストシーンが好きだったね~。小日向文世...

Re: 帯状疱疹
おぉ、聞いたことないけれども何かとかかっ...

Re: 帯状疱疹
家のカミサンもなったことがあります。 早くよくなるといいですね。

Re: 帯状疱疹
うーん、仲間がいると思うと気が休まります...

Re: 帯状疱疹
聞いたことなかったですけど、結構かかる人...

Re: 帯状疱疹
私もかかったことあるんでわかりますが,結...

Re: 帯状疱疹
ご愁傷様です。早くよくなられることを願っ...

Re: 麗しのサブリナ
やっぱりヘップバーンはいいですねー

Re: 麗しのサブリナ
ひさしぶりに侍ズムを開いたら、私の入り込...
10月 2007
  1  2  3  4  5  6 
 7  8  9  10  11  12  13 
 14  15  16  17  18  19  20 
 21  22  23  24  25  26  27 
 28  29  30  31    
9  |  今日  |  11





はてなブックマーク数

あわせて読みたい


follow yusukey at http://twitter.com


Servlet / JSP で GET/POST パラメータを受け取るときは request#setCharacterEncoding() を事前に読んでおく。

これは今時常識ですが、Tomcat でどうしても文字化けしてしまい、2時間くらいハマりました。

WebLogic ではどのバージョンでも setCharacterEncoding() で指定した文字セットでデコードしてくれるのに、Tomcat だと ISO-8859-1 として文字列が取得できてしまうという状況です。

Apache のバグデータベースにも Open 中のバグはなく、ぶらぶら調べてみたら@IT の記事に答えがありました!

なんと Tomcat 5.x から GET パラメータに対しては setCharacterEncoding() が効かなくなったそうです。


・@IT - Javaの文字化け対策FAQ(3)

■GETメソッド利用時の注意点

setCharacterEncodingメソッドの利用において1点注意すべき点は、フォームのデータ送信にGETメソッドを用いたときの振る舞いがWebコンテナの実装依存であることだ。


対策方法は useBodyEncodingForURI というパラメータを servlet.xml 内で指定することだそうです。
恐らく一般的な Tomcat ユーザでは常識なんでしょうね。
例えばこんな感じ。
    <Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true"/>


明示的にエンコーディングを指定したのだから、それに従うべき、と個人的には思いますが・・。
勉強になりました。

追記:
仕様(2.3/2.4 で確認)によると"It must be called prior to parsing any post data or reading any input from the request." とあり、setCharacterEncoding は post データのエンコードを決定するためのメソッドであることがわかります。
GET のパラメータのエンコーディングについては仕様がなく、コンテナ依存になっている状態のようですね。
#最新の 2.5 では未確認

追記2:
いや、GET リクエストは HTTP リクエストの一行目に書かれているのだから、デコード対象である "any input from the request" に含まれるんじゃないの?

追記3:
単にリクエストからデータを呼び出す前にこのメソッドを呼び出しておけよと言っているだけで、 GET パラメータにもこのエンコーディングが適用されるようなことは暗黙的にも明示的にも言ってないですね。
Servlet Spec 2.5 - SRV.3.9 Request data encoding では、
The default encoding of a request the container uses to create the
request reader and parse POST data must be “ISO-8859-1” if none has been
specified by the client request.

と言っているので、このセクションでは POST データのエンコーディングについて説明していることが暗黙的に読み取れます。
GET リクエストパラメータのエンコーディングについてはざっとみたところ Servlet Spec 2.5 でも触れられていないみたいでした。


関連エントリ:
るいもの戯れ言 - HTTP GETリクエストにおけるパラメータの文字コード

タグ :

もう済んだ話かと思えば、買収騒動に関して BEA が値上げ交渉を始めた模様です。
単に断るだけという戦略は株主の利益保護という観点からは誤った選択だと批判している筋があったので、それに答えた形になるのでしょうか。

BEA Board Sets $21.00 Per Share Value Position

超テキトウ訳:
Oracle が繰り返し幾らなら売ってくれるんだとしつこいから専門家に相談したら$21くらいが妥当なんじゃないかと。
それ以上の値をつけてくれるなら Oracle だろうと他の会社だろうと歓迎ダヨ。


SAP や EMC ならば重複する領域も少なくソリューションを補完し合う関係になって Oracle に対する強い抵抗勢力となりそうなので、個人的に良いと思うのですが。
さて、ここで参戦してくる会社が出てくるでしょうか?


関連エントリ:
BEA Systems, Oracle の買収提案に合意
Oracle のBEA Systems 買収オファー、期限切れる
Oracle、BEA Systems の買収提案が拒否されたことを発表
Oracle、BEA Systems 買収に未練
Oracle による BEA Systems 買収回避
Oracle が BEA Systemsを買収???

タグ :