본문 바로가기

관리 메뉴

브라우저별 한글 파일명 인코딩하기(엣지 추가) 본문

Java

브라우저별 한글 파일명 인코딩하기(엣지 추가)

SaintsP 2019. 5. 2. 14:34

서버에서 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