반응형


PHP 작업을 하던 중 생각치도 못한 에러를 찾았습니다.


대부분 ie로 다운로드가 될때 iconv 함수로 utf-8을 euc-kr을 인코딩을 해주는데요.


무조건 euc-kr로 변환하는건 좋은 로직이 아니라고 봅니다.


if($ie) {
// UTF-8에서 EUC-KR로 캐릭터셋 변경
$filename = iconv('UTF-8', 'EUC-KR', $filename);
}

header('Content-Disposition: attachment; filename="'.$filename.'"');


구글링을 하면 이런 로직 많이 있었습니다.


브라우저가 ie 일 때 파일명을 EUC-KR로 변환하여 헤더에 적용하는것인데


문제는 파일명이 EUC-KR로 변환이 될수 없는 한글일때 iconv는 false를 반환한다는 것입니다.


이 소스를 적용하기 전에


파일명이 저장된 DB의 인코딩 값, 서버의 인코딩 값이 모두 UTF-8이면 EUC-KR을 사용할 이유가 없는것 같습니다.


그래서 변경한 소스는 파일명을 urlencode 함수로 인코딩하여 헤더에 적용하였더니 해결되었습니다.



구글링이 항상 옳은 방법은 아닌것 같네요.



반응형

+ Recent posts