[재요청] 리눅스에서 파일다운로드시 한글 파일명이 "---------.ppt" 표시
- 작성자 :
- 박*동
- 작성일 :
- 2017-09-22 10:43:08
- 조회수 :
- 1,461
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
String sEncFileName = new String(localSaveFileName.getBytes("ISO-8859-1"),"UTF-8");
LOGGER.debug("##########sEncFileName :"+sEncFileName);
결과가 ===> ##########sEncFileName :01_아키텍쳐설계서(1.시스템)_V0.1.pptx
다운로드 할때 전자정부 프레임워크에 있는 Attach file 모듈을 사용 했어요..
String dispositionPrefix = "attachment; filename=";
String encodedFilename = null;
if (browser.equals("MSIE")) {
encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20");
} else if (browser.equals("Trident")) { // IE11 문자열 깨짐 방지
encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20");
} else if (browser.equals("Firefox")) {
encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\"";
} else if (browser.equals("Opera")) {
encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\"";
} else if (browser.equals("Chrome")) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < filename.length(); i++) {
char c = filename.charAt(i);
if (c > '~') {
sb.append(URLEncoder.encode("" + c, "UTF-8"));
} else {
sb.append(c);
}
}
encodedFilename = sb.toString();
} else {
//throw new RuntimeException("Not supported browser");
throw new IOException("Not supported browser");
}
response.setHeader("Content-Disposition", dispositionPrefix + encodedFilename);
if ("Opera".equals(browser)) {
response.setContentType("application/octet-stream;charset=UTF-8");
}
무엇이 문제인가요. 처음 답변주신사항은 인코딩은 전부 UTF-8 로 다 맞췄습니다.
윈도우에서 정상이고 Linux 에서 깨지는 현상입니다.
LOGGER.debug("##########sEncFileName :"+sEncFileName);
결과가 ===> ##########sEncFileName :01_아키텍쳐설계서(1.시스템)_V0.1.pptx
다운로드 할때 전자정부 프레임워크에 있는 Attach file 모듈을 사용 했어요..
String dispositionPrefix = "attachment; filename=";
String encodedFilename = null;
if (browser.equals("MSIE")) {
encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20");
} else if (browser.equals("Trident")) { // IE11 문자열 깨짐 방지
encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20");
} else if (browser.equals("Firefox")) {
encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\"";
} else if (browser.equals("Opera")) {
encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\"";
} else if (browser.equals("Chrome")) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < filename.length(); i++) {
char c = filename.charAt(i);
if (c > '~') {
sb.append(URLEncoder.encode("" + c, "UTF-8"));
} else {
sb.append(c);
}
}
encodedFilename = sb.toString();
} else {
//throw new RuntimeException("Not supported browser");
throw new IOException("Not supported browser");
}
response.setHeader("Content-Disposition", dispositionPrefix + encodedFilename);
if ("Opera".equals(browser)) {
response.setContentType("application/octet-stream;charset=UTF-8");
}
무엇이 문제인가요. 처음 답변주신사항은 인코딩은 전부 UTF-8 로 다 맞췄습니다.
윈도우에서 정상이고 Linux 에서 깨지는 현상입니다.
A
안녕하세요 박수동님!
현재 리눅스 서버 또한 인코딩 설정을 확인 하신 후 원하시는 인코딩에 맞게 변경해 주셔야 합니다.
변경 방식이 여러가지가 있으므로 임시적 방법과 영구적인 방법을 선택하여 적용해 주시면 됩니다.
감사합니다.
현재 리눅스 서버 또한 인코딩 설정을 확인 하신 후 원하시는 인코딩에 맞게 변경해 주셔야 합니다.
변경 방식이 여러가지가 있으므로 임시적 방법과 영구적인 방법을 선택하여 적용해 주시면 됩니다.
감사합니다.