はじめまして。ご質問いただきありがとうございます。
>入力URL 結果
>/test OK(test配下のindex.htmlが表示)
>/test/ OK(test配下のindex.htmlが表示)
>/日本語 NG(404.htmlも表示されずブラウザのエラー画面が表示)
>/日本語/ OK(日本語配下のindex.htmlが表示)
私も試してみましたが、正直、わけがわからない結果となっています。
Firefox, Edgeでは、
/日本語
の場合だけ、リクエストラインが以下のようになっています。
GET /%E5,%9E/ HTTP/1.1
これをデコードしても該当のフォルダは存在しないので、私が試した範囲では、
404が返りました。
IEでは、1回だけ
GET /%E6%97%A5%E6%9C%AC%E8%AA%9E HTTP/1.1
つまり正しくエンコードされた形でリクエストが投げられましたが、
以後何度試しても、そもそもリクエストが投げられず、ブラウザ側で
「このページを表示できません
Web アドレス
http://localhost:8001 が正しいか確かめてください」
のエラーになっています。
奇妙なのは、Edge, Firefox, IEのどれにおいても、
http://localhost:8001/日本語/
http://localhost:8001/日本語.html
http://localhost:8001/あいうえお
http://localhost:8001/中国語
等はうまくいくのに、
http://localhost:8001/日本語
の場合だけ、
GET /%E5,%9E/ HTTP/1.1
になったり、リクエストが投げられなかったりしていることです。
SenderThread.javaの24行目に、以下のようにSystem.out.println()を挟んで確認しました。
while ((line = Util.readLine(input)) != null) {
if (line.equals(""))
break;
System.out.println("line.." + line);