- PR -

Tomcatで日本語ファイルへのリンク

投稿者投稿内容
NV
ベテラン
会議室デビュー日: 2003/05/20
投稿数: 73
投稿日時: 2006-07-12 12:45
Webサーバとして、WinXP ProでTomcat5.5を使用しています。
ハイパーリンク先に、日本語名のファイル(.pdf)を指定しますが、Tomcatではうまくレスポンスを返せないようです。

2バイト文字以外のファイルは、リンク先で表示できるのですが・・・。

何か良い方法(Tomcatの設定等)はありますでしょうか?

ご教授いただければ幸いです。
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2006-07-12 13:28
マルチバイト文字のリンクは、以下のクラスを使って、エンコードする必要があります。
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/net/URLEncoder.html

標準がutf-8となっているので、JSPやHTMLも、utf-8にしてしまう方がいいと思います。
お節介に過ぎるかもしれません・・・(- -)

ちなみに、IE6を使った、WordやExcelへのリンクの場合は、
エンコードすると、逆に受け付けてくれなくなったりします。orz

[ メッセージ編集済み 編集者: Edosson 編集日時 2006-07-12 13:29 ]
NV
ベテラン
会議室デビュー日: 2003/05/20
投稿数: 73
投稿日時: 2006-07-13 09:07
アドバイスありがとうございます。

上記のURLエンコードの方法は理解できるのですが、そもそもブラウザからリクエストする時に、既にエンコードされているのかと思っております。ブラウザはIE限定です。

/data/テスト.pdf へのリンクに対して、Tomcat下記のステータスコードを返してきます。

 HTTPステータス 404 - /data/%E3%83%86%E3%82%B9%E3%83%88.pdf

ブラウザが2バイト文字に対して自動的にURLエンコードして、それに対してTomcatがそのようなファイルはないと返してくるのではないかというのが私の認識です。

この辺に関しての対処方法を探しております。
また、私自身の認識も正しいのかもご指摘願えたらと思っております。


改めて、整理すると

 <a href="/data/テスト.pdf">テスト.pdf</a>

以上のハイパーリンクに対して、テスト.pdfを表示したいということです。
TomcatをWebサーバとして使用しています。

よろしくお願いします。


[ メッセージ編集済み 編集者: NV 編集日時 2006-07-13 09:13 ]
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2006-07-13 10:08
引用:

NVさんの書き込み (2006-07-13 09:07) より:

上記のURLエンコードの方法は理解できるのですが、
そもそもブラウザからリクエストする時に、既にエンコードされているのかと思っております。


URLエンコードがなんなのか、について調べてみましょう。
ここでは、エンコード元の文字コードがSHIFT-JISかEUC-JPどうか、でも、
エンコードの結果が違ってくる、とだけ書いておきます。
引用:

ブラウザはIE限定です。

/data/テスト.pdf へのリンクに対して、Tomcat下記のステータスコードを返してきます。

 HTTPステータス 404 - /data/%E3%83%86%E3%82%B9%E3%83%88.pdf


IE6&MS-Office限定だったら、これでなんの問題もないんですけどね。
引用:

ブラウザが2バイト文字に対して自動的にURLエンコードして、それに対してTomcatがそのようなファイルはないと返してくるのではないかというのが私の認識です。


NVさんの理解の通りであるとしたら、どうしてうまくいかないんでしょうか。
何が間違っているんでしょうね。
引用:

また、私自身の認識も正しいのかもご指摘願えたらと思っております。


能書きはいいから、手を動かしてみましょう。

[ メッセージ編集済み 編集者: Edosson 編集日時 2006-07-13 10:11 ]
NV
ベテラン
会議室デビュー日: 2003/05/20
投稿数: 73
投稿日時: 2006-07-13 12:40
下記にて

<a href="/data/%E3%83%86%E3%82%B9%E3%83%88.pdf">テスト.pdf</a>


エンコードしたURIであっても、HTTPステータス 404 - /data/%E3%83%86%E3%82%B9%E3%83%88.pdf で、うまくファイルを取得できません。

Edossonさんの仰るとおり、私では能書きだけでなく手を動かしても解決できないようです。

私自身の理解不足が原因だと思いますが、どなたか間違っている部分をご指摘願えたら幸いです。
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2006-07-13 13:06
エンコードの失敗では、404にはならないんですね。
引用:

NVさんの書き込み (2006-07-13 09:07) より:

 <a href="/data/テスト.pdf">テスト.pdf</a>


ここは、
 <a href="data/テスト.pdf">テスト.pdf</a>
ではありませんか?
先頭に'/'がつくと、ルートフォルダを参照に行くと思います。

それから、
<a href="data">data</a>
をクリックして、フォルダ内のファイル一覧が表示されますか?
まずはこれが表示されないといけません。
表示が確認できれば、表示されているリンクをクリックして、
URLエンコードが、実際にどのように行われているのか確認できます。

泥臭い上にスマートじゃないですけど。
NV
ベテラン
会議室デビュー日: 2003/05/20
投稿数: 73
投稿日時: 2006-07-13 13:18
>> Edossonさん

ご回答ありがとうございます。

そういう意味(設定の問題)ですと、

 <a href="/data/テスト.pdf">テスト.pdf</a>
 <a href="/data/%E3%83%86%E3%82%B9%E3%83%88.pdf">テスト.pdf</a>

上記は駄目ですが、下記の別ファイルは問題なく表示されます。

 <a href="/data/test.pdf">テスト.pdf</a>


実際はアドレス直打ちですが・・・。
_________________
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2006-07-13 13:39
引用:

NVさんの書き込み (2006-07-13 13:18) より:

そういう意味(設定の問題)ですと、


なんでこれが設定の問題になるのか、ワケがわからないです。
引用:

上記は駄目ですが、下記の別ファイルは問題なく表示されます。


dataフォルダの一覧を取得できるかどうか確認する、
そのリンクを叩いて、エンコーディングに関するブラウザの振る舞いを確認する、
ということは、やってらっしゃらないんですね。
引用:

実際はアドレス直打ちですが・・・。


そういうのって、動作確認といえるんですか?
リンクがいくつかあるだけのHTMLを書くくらい、たいした手間でもありますまい。

スキルアップ/キャリアアップ(JOB@IT)