useBodyEncodingForURI は、request.getPathInfo には効かない。残念。

ttp://localhost:8080/hoge/fooServlet/%E3%81%82.bar?a=%E3%81%82

を GET したとき、

  • useBodyEncodingForURI="true"
  • request.setCharacterEncoding("UTF-8");

が行われていると、request.getParameter("a") は "あ" を取得できるけれど、request.getPathInfo は "/???.bar" になってしまう。
<対応>
request.getPathInfo した値を ISO-8859-1でバイト配列に戻し、UTF-8で文字列へ復号化する。