- - PR -
Servletでの文字コード問題
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2003-05-22 17:23
page ディレクティブの pageEncoding や contentType で指定されるエンコードディング
はJSPがコンパイルされるときの文字エンコードや、ブラウザに出力される際に使用され るうエンコーディングに使われます。 ブラウザがパラメータを post するときには contentType で指定したエンコードが使わ れますが、 request.getParameter() するときに用いられるエンコードは別途指定する 必要があります。それが、ご指摘の request.setCharacterEncoding() ですね。 これは ServletAPI2.3 に準拠したアプリケーションとしては一番妥当な方法です。 ServletFilterのサンプルとしてよく使われているのを見ます。 http://www.hellohiro.com/filter.htm 全ての JSP に書いたり、フィルタを作っても良いのですが、あまりにも一般的に 行われるので、WebLogicやTomcatでは設定のみで実現できます。 ・WebLogic weblogic.xml に input-charset 要素で指定する http://edocs.beasys.co.jp/e-docs/wls/docs70/webapp/components.html#210418 ・Tomcat filter.SetCharacterEncodingFilter を web.xml でデプロイする http://www.nihon-eng.co.jp/c-break/TechNote/tomcat/TCAT41_Inst.htm ・Websphere filter.SetCharacterEncodingFilter を使えるとは思いますが、なんらか の設定でできるのではないかと思います? >String xx = new String(文字.getBytes("8859_1"), "MS932"); >というやり方ではダメでした。 ServletAPI2.3によると、デフォルトのエンコーディングは "ISO-8859-1" でなくて はならないとされていますので、上の方法でうまくいかないとすると、なんらかの セッティングが働いているのかもしれませんね。 →ServletAPI2.3 SRV.4.9 Request data encoding より getCharacterEncoding() でエンコーディングになにが設定されてるか確かめては いかがでしょうか?仕様上は明示的に指定されていなければ null は返ってくるはずです。 >上記でも言ったようにweblogicはあくまで動作確認用サーバですので >あまりweblogic固有の設定で解決したくはありませんでした。 老婆心ですが、各製品に仕様の解釈の違いや実装具合によってそれぞれ挙動は 異なる部分があるのをよく目にします。 開発はあくまで運用環境に合わせておくのをお勧めしますよ。 もちろん、将来に備えてポータブルなアプリケーションにしておくため各種製品で テストしておくのはすばらしいことですが。 [ メッセージ編集済み 編集者: インギ 編集日時 2003-05-23 12:19 ] [ メッセージ編集済み 編集者: インギ 編集日時 2003-05-23 12:19 ] |
