반응형
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 함수로 인코딩하여 헤더에 적용하였더니 해결되었습니다.
구글링이 항상 옳은 방법은 아닌것 같네요.
반응형
'PHP' 카테고리의 다른 글
phpstorm 에서 프로젝트와 서버 호스팅 연결하기 (0) | 2018.08.28 |
---|---|
Codeigniter에서 htaccess 파일로 https 항상 연결하기 (0) | 2018.08.13 |
codeigniter SMTP 메일 보내기 (0) | 2017.06.04 |
autoset 오토셋 프로그램 사용 방법 (2) | 2017.01.19 |
php 함수 호출 경로 (0) | 2016.03.02 |