TomcatにおけるGETパラメータのデコーディング

どうも、GETパラメータのデコーディングがTC4とTC5で異なるようです。
TC4では問題なかったのに、TC5ではGETパラメータ値がデコードされません。(POSTパラメータはrequest#setCharcterEncodingした文字コードでデコードされます ← これはTC4でも5でも同じ)

外部設定ファイルにフラグ値(下記のisDecodeGet_変数)を設け、Tomcat5の場合はフラグをONにし、下記ロジックを通すことでとりあえずの解決。

// GET入力パラメータを、同エンコード形式でURLデコードする
// ------------------------------------------------------
/*
 * Tomcat4とTomcat5では、GETパラメータの動作が異なる。
 * < TC4 >
 * request#setCharacterEncoding()したエンコーディングでGETパラメータも
 * デコードされるため、ここでのデコード処理は不要。
 * org.apache.catalina.connector.HttpRequestBase#parseParameters()を参照
 *
 * < TC5 >
 * request#setCharacterEncoding()したエンコーディングではPOSTパラメータ
 * しかデコードされないため、ここでのデコードが必要。
 * org.apache.coyote.tomcat5.CoyoteRequest#parseRequestParameters()を参照
 * ※でもソースを読むと、TC4と方法は違うながらもデコードしようとしている
 *   ように思われる。
 *   2003/10/19 Tomcat5.0.13を調査。
 */
// GETパラメータをデコードする設定の場合
if (isDecodeGet_) {
    if (request instanceof HttpServletRequest) {
        HttpServletRequest hrequest = (HttpServletRequest)request;
        // GETの場合はURLデコードする
        if ("GET".equalsIgnoreCase(hrequest.getMethod())) {
            // パラメータ名の数
            for (Enumeration names = request.getParameterNames(); names.hasMoreElements();) {
                String name = (String)names.nextElement();
                String values[] = request.getParameterValues(name);
                for (int i = 0; i < values.length; i++) {
                    values[i] = new String(values[i].getBytes("ISO-8859-1"), sEncoding);
                }
            }
        }
    }
}

※このロジックは、ServletFilterで行うようにしています。

追記(2004/01/22)
Mobsterさん http://fieldnotes.sytes.net/wiki/index.jsp?pid=SetCharacterEncoding によると、Tomcat4系でも、4.1.29は5系と同じみたいです。