プロが教えるわが家の防犯対策術!

今まで使用していたtomcat3.1に変えてtomcat3.2.2をダウンロードして
動作させようとしました。
tomcatを起動して、JSPやServletのサンプルページは問題なく表示されました。

しかし、ディレクトリリストをブラウザ上に表示させようとしたところ、
以下のようなエラーが出てしまいました。
(ディレクトリリストは、URLをディレクトリ部分まで指定した際に、
そのディレクトリ内のファイル一覧が表示されるアレです)
思うに、ファイルリストの、タイムスタンプを表示させようとして、
木曜日を表す「木」という部分でエラーが発生しているかと思います。

これはどこか設定すれば修正できるものでしょうか?
ちなみにtomcat3.1を使用していたときは、問題なくディレクトリリストを
表示することができました。

よろしくおねがいします。

環境:
Windows2000
Tomcat3.2.2(バイナリ版)
JDK1.3

java.io.IOException: Not an ISO 8859_1 character:木
at org.apache.tomcat.core.BufferedServletOutputStream.print(BufferedServletOutputStream.java:221)
at org.apache.tomcat.request.DirHandler.doService(StaticInterceptor.java:687)
at org.apache.tomcat.core.Handler.service(Handler.java:287)
at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
.....

A 回答 (1件)

私も表示できませんでした。


どうやらデフォルトエンコードが3.2.xからISO-8859-1になってしまったようでその変更に伴うソースコードの修正がなんというか・・・いまいちのようです。

server.xmlのStaticInterceptorでsuppress="false"でファイルリスト表示なのでtrueにして非表示でこの苦難を乗り越えるという手もあります。

なんか根本的解決からかけ離れているのでもうひとつの方法を、問題のソースコードはStaticInterceptor.javaの532行目以降です

String charset = LocaleToCharsetMap.getCharset(Locale.getDefault());
if (charset == null || charset.equalsIgnoreCase("ISO-8859-1"))
res.setContentType("text/html");
else
res.setContentType("text/html; charset=" + charset);

他の部分でもやっているようにこんな感じにすべきだと思います。でもいくらオープンソースだからって勝手にコード修正してコンパイルして動かすのもねぇ。本来なら報告すべきなんだろうけど英語レベルが・・・

最後にファイルリストをtomcatではなくapacheにまかせるという方法があります。これは当然apacheとの連携が必要で説明が冗長になりますので割愛させていただきます。詳細はtomcatドキュメントの「Tomcat とApache の連携方法」をどうぞ。

#海の向こうのソフトを使うと大抵日本語にまつわる潜在的なバグに悩まされる

参考URL:http://www.ingrid.org/jajakarta/site/translation …
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。

>どうやらデフォルトエンコードが3.2.xからISO-8859-1になってしまったようで
やはりそうだったのですか。

現在私がtomcat使用しているのは、自分のJava勉強のために使っているだけなので、
勝手にソースを直して動作させるか、またはApacheと連携して使用しようかと思います。

自分の設定が悪いのではなかったようなので、安心しました。
ありがとうございました。

お礼日時:2001/06/18 16:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!