많은 서버 프로그램에서 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