主要还是因为编码格式错误导致的,可能与不同的浏览器有关。
/**
* 按照当前项目编码格式解码,然后以ISO-8859-1编码格式编码。
* @param file
* @return
* @throws UnsupportedEncodingException
*/
public String changeFileNameEncoding(File file) throws UnsupportedEncodingException {
String fileName = new String(file.getName().getBytes("utf-8"), "iso-8859-1");
//如果文件名包含中文,使用url编码器进行编码。
//同上操作把字符串按照项目编码格式进行编码,然后以iso编码格式解码
//encode后替换空格 解决空格问题
//fileName = URLEncoder.encode(fileName, "UTF-8");
//fileName = fileName.replace("+", "%20");
return fileName;
}