많은 서버 프로그램에서 COntent-Dispositon(http 헤더)에 파일 이름을 표시할 때 표준 위반을 하고 있습니다.
첫째, 공백 문자가 들어감에도 불구하고, 따옴표로 묶지 않는 것
Content-Disposition: attachment; filename=this is a picture.png
올바른 표기법)
Content-Disposition: attachment; filename="this is a picture.png"
두번째, ASCII 범위 밖의 글자를 내보낼 때입니다.
MS IE가 2231(?)을 지원하지 않기 때문에 현실적으로 RFC 2047(?)을 써야 합니다.
하지만, 어떠한 경우에도 그냥 8bit 글자를 내보내는 일은 피해야 합니다.
ex) 잘못된 예
Content-Disposition: attachment; filename=그림.png
라고 하면 안됩니다.
다음이 RFC 2231에 따른 방식입니다. 길이가 길지 않다면 RFC 2231이 RFC 2047봗 더 간단합니다.
Content-Disposition: attachment; filename*="UTF-8"%EA%BC.png"
다음은 RFC 2047 방식
Content-Disposition: attachment; filename="="?UTF-8?B?6re466LnBu?="
http가 8bit-clean에 불구하고 위에 적은 것처럼 7bit로 바꿔 주어야 하는 이유는 filename에 쓰인 character encdoing/MIME charset이 알려 주기 위해서 입니다.
정리 하면
1.filename에는 따옴표로 묶어야 합니다.
2.ASCII 범위 밖의 글자가 있을 때에는 character encoding을 표시해 줄수 있는 RFC 2047/2231 방식으로 변환해야 한다.
출처 : http://blog.naver.com/mgcos?Redirect=Log&logNo=50000162802