Content-disposition 설명 및 중국어 난호

http://xianfengmc.blog.163.com/blog/static/82690025200976101051437/
————————————————————————————————————————————————————
Content-disposition 은 MIME 프로 토 콜 의 확장 입 니 다.MIME 프로 토 콜 은 MIME 사용자 에이전트 에 추가 파일 을 표시 하 는 방법 을 알려 줍 니 다.Content-disposition 의 유효 치 범 위 는 의견 수렴 문서(RFC)1806 에서 Content-disposition 에 대해 토론 합 니 다.사용자 가 요청 한 내용 을 파일 로 저장 하려 고 할 때 기본 파일 이름 을 제공 하 는 것 입 니 다.구체 적 인 정 의 는 다음 과 같다.
content-disposition = “Content-Disposition” “:”disposition-type *( “;” disposition-parm )disposition-type = “attachment” | disp-extension-tokendisposition-parm = filename-parm | disp-extension-parmfilename-parm = “filename” “=” quoted-stringdisp-extension-token = tokendisp-extension-parm = token “=” ( token | quoted-string )
 
그러면 위 에서 구체 적 인 예 를 알 수 있다.
Content-Disposition: attachment; filename=“filename.xls”
물론 filename 인 자 는 경로 정 보 를 포함 할 수 있 지만 User-agnet 은 이 정 보 를 무시 하고 경로 정보의 마지막 부분 만 파일 이름 으로 합 니 다.응답 형식 이 application/ocket-stream 인 상태 에서 이 헤더 정 보 를 사용 했다 면 내용 을 직접 표시 하지 않 고'파일 다운로드'대화 상 자 를 팝 업 하 는 것 을 의미 합 니 다.다음은'열기'인지'저장'인지 결정 하 는 것 입 니 다. 
질문
Response.AddHeader(”Content-Disposition”, “attachment; filename=” + file.Name+”.xls”);중국어 디 스 플레이 오류 해결 방법
Response.setHeader(”Content-Disposition”, “attachment; filename=” + fileName+”.xls”); file.Name 이 중국어 라면 난 장 판 입 니 다.해결 방법 은 방법 1:response.setHeader("Content-Disposition","attachment;filename=” + java.net.URLEncoder.encode(fileName, “UTF-8″)); 다운로드 한 프로그램 에 위 문장 이 있 습 니 다.보통 IE6 다운로드 알림 상자 에 파일 의 이름 을 정확하게 표시 합 니 다.간 체 중국어 든 일본어 든.그러나 문 자 는 17 글자 만 넘 으 면 다운 받 을 수 없다.1.원래 의 방식,즉 먼저 URLEncoder 로 인 코딩 하고 중국어 문자 가 17 개가 넘 으 면 IE6 에서 파일 을 다운로드 할 수 없습니다.IE bug 입 니 다.마이크로소프트 지식 창고 글 KB 816868 참조.IE 가 Response Header 를 처리 할 때 header 의 길 이 를 150 바이트 정도 로 제 한 했 기 때 문 일 수 있 습 니 다.한 자 를 UTF-8 로 인 코딩 하면 9 개의 바이트 이 고 17 자 는 153 개의 바이트 이기 때문에 잘못 보고 할 수 있다.그리고 접미사 와 맞지 않 습 니 다.방법 2:response.setHeader("Content-Disposition","attachment;filename=” + new String( fileName.getBytes(”gb2312″), “ISO8859-1″ ) ); 첨부 파일 의 이름 이 모두 간 체 중의 문자 임 을 확보 하 는 상황 에서 이 방법 은 확실히 가장 효과 적 이 며 고객 이 하나하나 IE 를 업그레이드 하지 않 아 도 된다.대만 동포 가 쓰 면 gb 2312 를 빅 5 로 바 꾸 면 됩 니 다.그러나 현재 시스템 은 통상 적 으로 국제 화 지원 에 가입 해 UTF-8 을 보편적으로 사용 하고 있다.파일 이름 에 간 체 중 문자 도 있 고 번 체 중국어 도 있 고 일본어 도 있 습 니 다.그럼 난 장 판이 생기 는 거 야.또 Firefox(v 1.0-en)에서 다운로드 하 는 것 도 난 장 판이 다.
이런 방법 으로 또 하나의 문 제 는 ie7 에서 정상적으로 다운로드 할 수 있 지만 파일 이름 에'-'와 같은 특수 한 중국어 문자 가 나타 나 면 예상 치 못 한 결과 가 나 올 수 있다 는 것 이다.바로 다운로드 한 파일 이름 이 원 하 는 것 과 다 르 고 알파벳 만 나 올 뿐 원 하 는 이름 이 나 오지 않 는 다 는 것 이다.이런 문 제 는 gb 2312 를 gbk 로 바 꾸 어 해결 할 수 있다.글 뒤에 gb 2312 와 gbk 의 차이 가 첨부 되 어 있다.
―ISO-8859-1,ISO 8859-1,ISO 88591 getBytes 의 매개 변수 로 서 첫 번 째 만 가능 하지 않 을까요?
답:첫 번 째 는 표준 이지 만  java   뒤의 두 가 지 를 호 환 하여 사용 할 때 모두 가능 합 니 다.하지만 대소 문자 도 다 를 때 가 있 습 니 다.마치 my sql 데이터 베 이 스 를 연결 할 때 와 같 습 니 다.
GBK:              ,        GB2312-80        ,     Unicode 
20902, 883 , 21003 1894 。
Microsoft Windows 95 GBK , GBK Unicode CJK ,
Unicode 。

GB , GB2312-80《 》,1980 ,
, ( ) 。
P-Windows3.2 OS GB2312 , Windows 95/98 GBK 、
GB2312。GB 6763 、682 , : 3755,
, 3008, 。 、


GBK 、 UCS 。GBK 1995 10 ,
12 GBK 。 GB2312, 21003 、 883 , 1894
, 、 。

다음으로 전송:https://www.cnblogs.com/cuizhf/archive/2013/01/20/2868407.html

좋은 웹페이지 즐겨찾기