브라우저별 한글 파일명 인코딩하기(엣지 추가) 본문
서버에서 JSP에 파일을 전송할 때 한글로 파일명을 보내면 깨지는 경우가 다반사입니다.
따라서 아래 로직과 같이 User-Agent header 값을 가져와서 브라우저 별로 인코딩을 해 줘야 한글이 깨지지 않고 정상 출력이 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | String name = "파일이름"; // 브라우저 별 한글 인코딩 String header = request.getHeader("User-Agent"); if (header.contains("Edge")){ name = URLEncoder.encode(title, "UTF-8").replaceAll("\\+", "%20"); response.setHeader("Content-Disposition", "attachment;filename=\"" + name + "\".xls;"); } else if (header.contains("MSIE") || header.contains("Trident")) { // IE 11버전부터 Trident로 변경되었기때문에 추가해준다. name = URLEncoder.encode(title, "UTF-8").replaceAll("\\+", "%20"); response.setHeader("Content-Disposition", "attachment;filename=" + name + ".xls;"); } else if (header.contains("Chrome")) { name = new String(title.getBytes("UTF-8"), "ISO-8859-1"); response.setHeader("Content-Disposition", "attachment; filename=\"" + name + "\".xls"); } else if (header.contains("Opera")) { name = new String(title.getBytes("UTF-8"), "ISO-8859-1"); response.setHeader("Content-Disposition", "attachment; filename=\"" + name + "\".xls"); } else if (header.contains("Firefox")) { name = new String(title.getBytes("UTF-8"), "ISO-8859-1"); response.setHeader("Content-Disposition", "attachment; filename=" + name + ".xls"); } | cs |
이렇게 파일명 인코딩 후 파일을 출력하면 정상적으로 한글 파일명이 출력되는것을 확인 할 수 있습니다.
- 참고 블로그 : http://egloos.zum.com/aretias/v/702775
'Java' 카테고리의 다른 글
자바 Date Format 변경하기(SimpleDateFormat) (0) | 2020.09.28 |
---|
Comments