본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


Spring framework

[JAVA, JAVASCRIPT] 파일 다운로드 한글깨짐

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2023. 1. 9.

 

간단하게 정리한 파일 다운로드시 한글깨짐 현상 방지방법 입니다.

먼저 한글명을 URL인코더를 통해서 인코딩 해 줍니다.

 

* 자바파일

import java.net.URLEncoder;

{
    public String convertFileName(String fileName)  {  //한글파일 이름을 받아서
        try {
            fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");  //인코딩!
        } catch (Exception e) {
            e.printStackTrace();
        }
        return fileName;
    }
}

 

자바에서 URLEncoder 클래스는 일반 문자열을 웹에서 통용되는 'x-www-form-urlencoded' 형식으로 변환하는 역할을 담당 합니다.

이렇게 인코딩을 해 준 다음에 다운받는 페이지(js, jsp, html 및 php 등)에서 파일 이름을 받는 곳 에서 디코딩을 해 줍니다.

아래처럼 헤더 부분에 filename 이라는 값으로 인코딩한 파일 이름을 넣어주고,

이런느낌?

 

받는 스크립트 파일에서는 아래처럼 decodeURI라는 window 함수를 실행하여 헤더부분의 이름을 변환하여 줍니다.

아래는 ajax로 만든 샘플코드 입니다.

$.ajax({
    url: '주소',	
    cache: false,
    xhrFields: {
        responseType: "blob",
    },
    success: function (data, status, xhr) {
        let fileName = decodeURI(xhr.getResponseHeader("filename"));  //요런 느낌?
    }
});

 

요걸 실행해본 모습입니다.

아래처럼 서버에서는 한글파일을 인코딩해주고..

 

브라우저에서는 받은 파일 이름은 디코드 해 줍니다.

 

간단하게 정리해본 한글 이름으로 되어있는 파일을 다운로드 받을 때 깨지는 현상을 방지하는 방법이였습니다.

궁금한점 또는 틀린 부분은 언제든 연락주세요!

* 왠지 예전에 정리했던거 같은..데..

 

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글