はじめまして。ご質問いただきありがとうございます。
>入力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);