Hi~ Summers!!

한글 파일 다운로드 시 깨지는 문제 본문

개발/JSP&HTML

한글 파일 다운로드 시 깨지는 문제

eNaNII 2014. 5. 12. 13:28

response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=\""+fileName+"\"");


이렇게 다운로드 시 한글이 깨지거나 빠지는 현상이 발생한다.


클래스 하나를 만들어서 아래 메소드를 하나 생성한 뒤 파일명을 변경하면 된다.

public static String encodeStrToUTF8(String str){
        StringBuilder sb = new StringBuilder();
       
        byte[] btArray = str.getBytes(Charset.forName("UTF-8"));
       
        for(int i = 0 ; i < btArray.length ; i++)
        {
            short c = (short) ((short)btArray[i] & 0x00ff);
       
            if(c == '%' || c == ' ' || c == ' ')
            {
                sb.append(String.format("%%%02x", c));
            }
            else if(c < 128)
            {
                sb.append(String.format("%c", c));
            }
            else
            {
                if(i+2 < btArray.length)
                {
                    sb.append(String.format("%%%02X%%%02X%%%02X", btArray[i], btArray[i+1], btArray[i+2]));
                    i+=2;
                }
            }
        }
        return sb.toString();
    }


[완성예제]

response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=\""+StringUtil.encodeStrToUTF8(fileName)+"\"");


Comments