Top

[Web] 파일 다운로드시 한글 파일 이름 깨짐 현상 | Web-Programing
이강현 (lkhtt) | Html | 2012/11/07 13:05:54 | 조회:13171
첨부파일 (1)




위의 그림처럼 한글 파일 다운로드 시에 한글 파일 이름이 깨지는 경우가 있습니다.

이럴때에는

$ie= isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false;

//IE인경우 한글파일명이 깨지는 경우를 방지하기 위한 코드
if($ie)
{
$file_name = iconv('UTF-8', 'euc-kr', $file_name);
}


헤더 부분에 추가
if($ie)
{
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header("Content-Transfer-Encoding: binary");
header('Pragma: public');
}
/*********************************************************************************
해주고 실행하면 왠만한 경우에는 한글이 깨지지 않고 나오게 됩니다. 위의 부분이 추가되었는데도 되지 않을 경우에는

if (strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE'))
{
// IE: rawurlencode()
$fn = preg_replace('/[:x5c/*?"<>|]/', '_', $file_name);
$file_name=rawurlencode($fn);
// fix IE bug
$file_name = preg_replace('/./', '%2e',$file_name, substr_count($file_name, '.') - 1);
}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'Opera'))
{
// Opera 9: RFC 2231
$fn = preg_replace('/[:x5c/{?]/', '_', $file_name);
$file_name=rawurlencode($fn);
}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'Chrome'))
{
// Chrome
$fn = preg_replace('/[:x5c/{?]/', '_', $file_name);
$file_name=rawurlencode($fn);
}
else
{ // Mozilla: RFC 2047
$file_name=base64_encode($file_name);
}
헤더 위 쪽 부분에 위의 4가지 if 구문들을 추가해주면 한글이 깨지지 않고 나오게 됩니다.

해당 구문들은 네이버 블로그등을 통하여 검색 결과로 나온 예제들을 기초로 만들어져 있습니다.
공유하기
공유하기
1
0
0


댓글을 불러오는 중입니다.
▲ 이전글 [WEB] 반응형 웹에 대해서.. 김경훈 (admin) 2012-11-14 15:55:30
▼ 다음글 [LINUX]리눅스 케릭터셋 설정, vi 에디터 케릭터 셋 설정 안지흠 (hoomiyam) 2012-11-02 11:07:35