JSTLのi18nタグ(fmt)を利用したら文字化け

 Tomcat4.1でJSTLi18nタグのを利用したところ、タグで出力している−が文字化けするようになりました。色々調べたところ、下記のサイトにあるようにfmtタグを利用すると対応するLocaleに該当する文字エンコーディングを暗黙でServletResponseに設定してしまうようです。
 よって、JSP上はcontentType="text/html;charset=Windows-31J"と設定しているのに、戻ってきたHTTPヘッダを見ると、"Content-Type: text/html;charset=Shift_JIS"になってしまっています。
 Servlet 2.4仕様のコンテナでは、明示的な指定が暗黙的な指定よりも優先するので問題ないようですが、Tomcat4.1(Servlet 2.3)だと暗黙的な指定で上書きされてしまうようです。
 pattern指定でASCIIコードしか返す予定がないのに、こんなところに影響してしまうなんて・・・。どう対応するのが良いのかなぁ。


【参考サイト】
 http://four.sssg.org/documents/jajakarta/taglibs/topics/docs/i18n_topics.html#topic-1
 http://java.sun.com/developer/technicalArticles/Intl/MultilingualJSP/index_ja.html