读书人

上载 中文文件名乱码有关问题

发布时间: 2012-12-24 10:43:13 作者: rapoo

下载 中文文件名乱码问题

private String processFileName(HttpServletRequest request, String fileName) throws IOException {
??? ??? String codedfilename = null;
??? ??? if (request.getHeader("User-Agent").indexOf("MSIE") != -1) {
??? ??? ??? String prefix = fileName.lastIndexOf(".") != -1 ? fileName.substring(0,
??? ??? ??? ??? ??? fileName.lastIndexOf(".")) : fileName;
??? ??? ??? // System.out.println(prefix);
??? ??? ??? String extension = fileName.lastIndexOf(".") != -1 ? fileName
??? ??? ??? ??? ??? .substring(fileName.lastIndexOf(".")) : "";
??? ??? ??? // System.out.println(extension);
??? ??? ??? String name = java.net.URLEncoder.encode(prefix, "UTF8");
??? ??? ??? if (name.lastIndexOf("%0A") != -1) {
??? ??? ??? ??? name = name.substring(0, name.length() - 3);
??? ??? ??? }
??? ??? ??? // System.out.println(name);
??? ??? ??? int limit = 150 - extension.length();
??? ??? ??? if (name.length() > limit) {
??? ??? ??? ??? name = java.net.URLEncoder.encode(prefix.substring(0, Math.min(prefix
??? ??? ??? ??? ??? ??? .length(), limit / 9)), "UTF-8");
??? ??? ??? ??? if (name.lastIndexOf("%0A") != -1) {
??? ??? ??? ??? ??? name = name.substring(0, name.length() - 3);
??? ??? ??? ??? }
??? ??? ??? }
??? ??? ??? codedfilename = name + extension;
??? ??? ??? codedfilename = codedfilename.replaceAll("\\+", " "); // 重新建立空格
??? ??? } else if (request.getHeader("User-Agent").indexOf("Mozilla") != -1) {
??? ??? ??? codedfilename = "=?UTF-8?B?"
??? ??? ??? ??? ??? + (new String(Base64.encodeBase64(fileName.getBytes("UTF-8"))))
??? ??? ??? ??? ??? + "?=";
??? ??? } else {
??? ??? ??? codedfilename = fileName;
??? ??? }
??? ??? return codedfilename;
??? }

读书人网 >编程

热点推荐