브라우저별 파일명 인코딩 처리에 대하여.
글쓴이: 송효진 / 작성시간: 일, 2004/10/24 - 4:25오후
php 코드 입니다.
header('Cache-Control: '); header('Pragma: '); header('Content-Length: '.$data->filesize); header('Content-Type: file/unknown; charset=utf-8'); header('Content-Disposition: attachment; filename="'.((MSIE) ? urlencode($data->filename) : $data->filename).'"');
MSIE 는 미리 지정된 상수로 익스플로러일 경우 true 입니다.
궁금한것은 firefox 에서 왜 urlencode() 한 파일명이 decode 되지 않고 나오는가 하는것입니다.
헤더에서 encode 해서 보내는 것이 표준이라고 누가 그러던데요...
Forums:
Re: 브라우저별 파일명 인코딩 처리에 대하여.
어느 분이 그랬는지는 모르지만, HTTP/1.1 표준(RFC 2616)에는 0x00~0x31과 0x7f를 제외한(단, CRLF는 허용) 어떠한 8비트 데이터라도 올 수 있게 되어있습니다. encode를 해야한다는 이야기는 일절 없습니다.
Content-Disposition 헤더에 관한 표준(RFC 2183)에는 단순히 value로 지정하고 있으며, 이는 과거에는 US-ASCII였으나, 업데이트된 표준(RFC 2231)에서는 8비트 문자셋이면 모두 허용하고 있으며, 사용한 인코딩을 지정할 수 있도록 되어있습니다.
결론적으로, urlencode를 하지 않는게 표준입니다.
댓글 달기