从下载地址中获取文件名称 的程序,但是遇到中文就是乱码,求解决
public  static String getFileName(URL url) {
String filename = null;
if(filename==null || "".equals(filename.trim())){//如果获取不到文件名称
HttpURLConnection conn;
try {
conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5 * 1000);
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*");
conn.setRequestProperty("Accept-Language", "zh-CN");
conn.setRequestProperty("Referer", url.toString()); 
// conn.setRequestProperty("lo ", "utf-8");
// conn.setRequestProperty("Charset", "utf-8");
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.connect();
System.out.println(conn.getResponseCode());
for (int i = 0;; i++) {
String mine = conn.getHeaderField(i);
if (mine == null) break;
String temp=conn.getHeaderFieldKey(i);
System.out.println(temp);
if(temp==null)continue;
if("content-disposition".equals(temp.toLowerCase())){
Matcher m = Pattern.compile(".*filename=(.*)").matcher(mine.toLowerCase());
if(m.find()) return m.group(1);//.substring(1, m.group(1).length()-1);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

filename = UUID.randomUUID()+ ".tmp";//默认取一个文件名
}
return filename;
}