TomcatのWEBアプリ配下に配置した日本語名ファイルへのブラウザアクセス

つまり、TomcatのWEBアプリが

Test-WEB-App
 ┃
 ┗━ PDF
 ┃      test.pdf
 ┃      あいうえお.pdf
 ┃
 ┗━ WEB-INF
         ┃
         ┗━ classes
         ┃
         ┗━ lib
         ・
         ・
         ・


とかの構成で、IEから「test.pdf」に「http://XXXXX:8080/Test-WEB-App/PDF/test.pdf」でアクセスするのは問題ないんだけど、「あいうえお.pdf」に「http://XXXXX:8080/Test-WEB-App/PDF/あいうえお.pdf」でアクセスする場合です。*1


この場合、IEがURLをUTF-8エンコーディングしている*2ので、エンコードされた「あいうえお」をTomcatが正しく解釈できずに、「404エラー」が出てしまいます。


これを回避するには、Tomcatに、URLはUTF-8で飛んできますから、ちゃんと解釈してくださいね。ということを教える必要があります。


で、ちょっとTomcatの設定を変える必要あり。

やることは、Tomcatの「conf」ディレクトリにある「server.xml」の「Connector」タグ中に「URIEncoding="UTF-8"」を追記するだけ。

<Connector
	port="8080"
	maxHttpHeaderSize="8192"
	maxThreads="150" 
	minSpareThreads="25" 
	maxSpareThreads="75"
	enableLookups="false" 
	redirectPort="8443" 
	acceptCount="100"
	connectionTimeout="20000" 
	disableUploadTimeout="true"
	URIEncoding="UTF-8" />

*1:PDFファイルのダウンロードじゃなくて、PDFをIEで直接見せる場合ね。

*2:IE6の「ツール」→「インターネットオプション」→「詳細設定」→「常にUTF-8としてURLを送信する」はデフォルトでチェックされているので。