URLに日本語ファイル名を付けなくても大丈夫です。
以下にJava Servletの例を挙げます。
Mac Safari
response.addHeader("Content-Disposition", "attachment; filename="プログラム内部の文字コードでファイル名のバイト配列を取得し、ISO-8859-1でエンコードします。
+ new String(fileName.getBytes(), "ISO-8859-1");
ついでに他の例も挙げておきます。
Windows IE
response.addHeader("Content-Disposition", "attachment; filename="
+ URLEncoder.encode(fileName, "UTF-8");
Windows Firefox、その他?
response.addHeader("Content-Disposition", "attachment; filename*=UTF-8'ja'"
+ URLEncoder.encode(fileName, "UTF-8");