首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2012-12-24 
下载 中文文件名乱码问题private String processFileName(HttpServletRequest request, String fileName)

下载 中文文件名乱码问题

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;
??? }

热点排行