Tomcat Patch about Character
Encoding
Tomcat 4の文字エンコーディングに関する次の問題を修正するパッチです。
-
- 問題点
- Coyote
Connectorを使用する際(通常、スタンドアロンでTomcatを実行している場合です)に、HTTPレスポンスヘッダがUCS2で表した各文字の下位バイトの列として出力されます。
- 改善策
-
HTTPレスポンスヘッダを、レスポンスヘッダのContent-Typeフィールドで指定されたエンコーディングでエンコードします。これによってレスポンスヘッダにアスキー文字以外を含めることができます。
-
- 問題点
- Warp
Connectorを使用する際(通常、ApacheとTomcatを接続して使用している場合です)に、HTTPレスポンスヘッダがUTF-8でエンコードされて出力されます。
- 改善策
-
HTTPレスポンスヘッダを、レスポンスヘッダのContent-Typeフィールドで指定されたエンコーディングでエンコードします。これによってレスポンスヘッダにアスキー文字以外を含めることができます。
Tomcat Patch
(2003年5月21日更新)
- 取り扱い: The Apache Software License, Version 1.1
- 動作環境: Tomcat 4.1.24
作者の環境はRed Hat Linux 8.0, JDK
1.4です。それ以外の環境での動作確認は行っていませんが、Tomcatのclassファイルを一部置き換えるだけですので、各種環境で動作すると思われます。また、Tomcat
4の他のバージョンでも、おそらく動作すると思われます。
以前のパッチで改善していた、Tomcat 4.1.12についての以下の問題は、tomcat
4.1.24現在で既に改善されています。
-
- 問題点
-
Tomcatは受信したURLをデコードする際に、URLをシステムのデフォルトのエンコーディング(日本語WindowsならShift_JIS、日本語Linuxならeuc-jp)でデコードしています。
- 改善策
-
受信したURLをデコードする際に、URLがUTF-8でエンコードされているものとして、デコードするようにします。
- これによって、クライアント側では、Internet Explorer, Netscape,
Mozillaのそれぞれ最新版などの、URLをUTF-8でエンコードして送信するブラウザから、アスキー文字以外の文字を含むURLを送信することができます。ただし、古いブラウザはURLを送信する際に、システムのエンコーディングでエンコードしています。
-
また、サーブレットはHttpServletRequest.getPathInfo()などで、アスキー文字以外を正しく受け取ることができます。
|