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日更新)
サイズ: 約37キロバイト
  • 取り扱い: 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()などで、アスキー文字以外を正しく受け取ることができます。