- - PR -
Tomcat4.1で、漢字URLが通らない
1
| 投稿者 | 投稿内容 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-06-29 14:43
先日、Windows Insiderにて投稿した内容なのですが、
やはり、Tomcatの振る舞いに関係するのではないかと思いましたので、 改めてこちらに再投稿致します。 なお、The Jakarta Projectの掲示板の方にもおじゃまさせて頂きました。m(_ _)m Windows2000 Server + Tomcat 4.1 にて、サイトを運用しようとしています。 ところが、デバッグ機と本番機で、漢字が含まれるURLに対する 振る舞いが違っていまして、解決策を探しています。 現象なのですが・・・。 まず、Tomcatをセットアップして、http://localhost:8080/examplesにアクセスします。 サンプル群のindex.jspは、examples/index.jspなので、 この場合は、images, jsp, servletsの3つのフォルダが表示されます。 ここで、examplesの直下に、漢字名のフォルダを作成します。(例:「テスト」) ブラウザをリロードすると、今度はフォルダが4つ、漢字名フォルダも表示されています。 で、いざ、この漢字名フォルダを選択すると、 HTTP Status 404 - /sekikaku/contents/%83e%83X%83g となってしまうんです。 これが片方だけの現象でして、もう片方については、正常に表示されてまして、 URLの該当部分をそのままコピーしても受け付けてくれるくらいです。 エンコードされたURLは渡っているのに、デコードされていないのでしょうか。 どこか、いじってはいけない部分をいじってしまったのかと思うのですが。 上記の現象について、何かご存じの方がいらっしゃいましたら、ご教示をお願い致します。 | ||||||||||||
|
投稿日時: 2004-06-29 16:32
index.jspやTomcatの実装はまったく見てませんので、間違っている可能性は有りますが。 うまく動かないほうのURL(%83e%83X%83g)は「テスト」をSJISでURLエンコードしています。 (厳密に言えば、SJISの2バイト文字を ISO-8859-1 と見なしているため1バイトずつの文字と解釈され、2バイト目が%xxになっていない) http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=11271&forum=12 にも書きましたが、 http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/appendix/notes.html#h-B.2 で、とりあえずURLはUTF-8で送ることが推奨されています。 UTF-8で漢字URLが送られればおそらくうまく行くのですが、うまく行かない原因としては2つ有ると思います。
1点目のほうは、例えばブラウザがIEだとすると、「ツール」→「インターネットオプション」以下に、「常にUTF-8としてURLを送信する」と言うチェックがあります。それの有無を調べてください。(ブラウザによりますが…) 2点目は、ブラウザで上記のような設定をしていない・又は設定そのものが無い場合、ページのエンコードでURLはエンコードするような仕様になっているものが多い、と言う事に起因します。 ページのエンコードがISO-8859-1だと(1点目の設定がされていないブラウザでは)「漢字URL」もISO-8859-1で解釈され1バイトずつURLエンコードされます。 この状態を回避するには、ページをUTF-8で出力するようにすると言う方法があります。 (漢字URLについては全てのサーバ・全てのブラウザ(ユーザエージェント)で動作が統一されているわけではないので、根本的には使わないことをお勧めします。) | ||||||||||||
|
投稿日時: 2004-06-29 16:48
おそらくは2点目かと思われます。 第3のマシンから、本番機、デバッグ機にそれぞれアクセスした場合、 同じ現象が起こります。
ご指摘の件は了解しました。 ところで、問題のjspですが、これはurlの指定したフォルダに welcome-file-listにあるファイルが存在しないために、Tomcatが生成したものです。 このような場合の、エンコードを指定する方法・箇所があるのでしょうか。
ポリシーの管理者が自分だったら、こんなことしないです | ||||||||||||
|
投稿日時: 2004-06-29 17:42
うーん、2点とも違うと言う可能性も残っているので。 ご自身で作成したjspだと思っていて、Tomcatデフォルトのものだと言うことも把握していませんでした。 (Tomcat4が手元に無いので5.0.24で試したら、ディレクトリリストを出力するページ自身はUTF-8で出力されたものの、漢字のファイルにはアクセス不可でした。) 多分これ以上お役には立てないかと思います。
ご愁傷様です… | ||||||||||||
|
投稿日時: 2004-06-29 17:48
ディレクトリ・リストを作成してるのはデフォルト・サーブレットです。 が、HTTP ヘッダ的には既に charset=UTF-8 で返してます。 ただし、HTML のヘッダには指定されてません。 このページは 5.0 のですが、4.1 でも参考になると思います、多分。 http://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/default-servlet.html 本番機とデバッグ機で、ディレクトリ・リストの HTML に違いは無いのですか ? | ||||||||||||
|
投稿日時: 2004-06-29 17:56
すみません。最初の投稿に間違いがありました・・・。
投稿において、「テスト」を入力して、そのURLエンコードが%83e%83X%83g と ありますが、これは、アドレスバーに直接漢字を入力した結果です。 申し訳ありませんでした。 しかし、本題の、ブラウザに表示されている漢字フォルダへのリンクを クリックした場合も、うまくいかないのです。 リンクそのものは、漢字でも表示されているのですが、 クリックすると、 HTTP Status 404 - /examples/%E3%83%86%E3%82%B9%E3%83%88/ となります。 この場合の漢字は、utf-8でエンコードされているはずなのですが。 こちらの方は、他方のマシンにコピーすると、期待通りの表示をしてくれます。
ということは、デフォルトでは日本語は扱えないと。ご指摘ありがとうございます。 Tomcatの設定を洗ってみます。 | ||||||||||||
|
投稿日時: 2004-06-29 18:11
本番機:うまくいかない
デバッグ機:期待通り
・・・んなことやってちゃダメですね。(大泣 紹介して頂いたサイトを見て勉強します。 ご教示頂きました皆様、ありがとうございました。 [ メッセージ編集済み 編集者: Edosson 編集日時 2004-06-29 18:18 ] | ||||||||||||
1
