久々にblogを書く機会がバグへの対処とはorz
2006年08月27日に投稿した「sendRedirectで日本語文字のURLが入っている場合の対処」の記事の方法だとURLによりExceptionが発生してしまうようです。
URL中に半角スペースを含むURLの場合RFC2396に違反するため、エスケープしなければいけません。
実はJ2SDK 1.4までは半角スペースを含むURLであってもURIクラス等でインスタンスを作成可能でしたが、JDK 5.0からはRFC2396に従いあらかじめエスケープしなければいけなくなったようです。
String strUrl = "https://traincat.net/blog/neko/電車猫の blog/日本語 ファイル名.doc".replace(" ","%20");
URI uri = new URI(strUrl);
response.sendRedirect(uri.toASCIIString());
この様にすれば、半角スペースが「%20」と変換されるのでURISyntaxExceptionやMalformedURLExceptionなしにURIクラスのインスタンスを作成できそうです。
めでたしめでたし。
・参考文献:
SMG-Java トラブルシューティング
+
コメント