Header里面的Content-Disposition只支持ASCII,所以我们传输的文件名必须是ASCII,当文件名为中文时,必须要将该中文转换成ASCII。
如果服务端能处理,最好直接将filename通过URLEncode编码。
根据你提供的代码,你服务端返回的数据实际是GBK编码,可参考以下代码是可以获取到正确名称:
String url = “http://hk.azero-ng.cn/index2.php”;
URL obj = new URL(url);
URLConnection conn = obj.openConnection();
Map> map = conn.getHeaderFields();
String[] cells = map.get(“Content-Disposition”).get(0).split(“;”);
String filename = cells[1].replace(” filename=”, “”);
System.out.println(filename);
String Wrong_utf8 = new String(filename.getBytes(“ISO-8859-1″),”GBK”);
System.out.println(Wrong_utf8);
建议服务端直接名称URLEncode编码即可,