반응형
웹 개발을 하다 보면, 다양한 브라우저에서 한글 파일명을 처리할 필요가 있습니다.
특히 다운로드 시 한글 파일명이 깨지는 문제는 많은 개발자들이 직면하는 일반적인 문제입니다.
PHP에서 이 문제를 해결하는 방법은 다음과 같습니다:
1. 브라우저 확인하기
먼저, 사용자의 브라우저 정보를 확인해야 합니다.
이는 $_SERVER['HTTP_USER_AGENT']를 통해 할 수 있습니다.
사용자의 브라우저는 다음과 같은 방식으로 확인할 수 있습니다:
if(isset($_SERVER['HTTP_USER_AGENT'])) {
if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Trident') !== false) {
// Internet Explorer
} else if(strpos($_SERVER['HTTP_USER_AGENT'], 'Edge') !== false) {
// Microsoft Edge
} else {
// Chrome, Firefox 등 기타 브라우저
}
}
2. 브라우저 별 인코딩 처리
각 브라우저 별로 파일명 인코딩을 다르게 처리해야 합니다:
- Internet Explorer: IE에서는 iconv 함수를 사용하여 UTF-8에서 EUC-KR로 인코딩합니다.
$fileName = iconv("UTF-8", "EUC-KR", $fileKor) . ".zip";
- Microsoft Edge: Edge에서는 rawurlencode 함수를 사용합니다. 이 함수는 URL에서 사용되는 특수 문자를 인코딩하여 표준 URL 형식으로 만듭니다.
$fileName = rawurlencode($fileKor) . ".zip";
- Chrome/Firefox 등 기타 브라우저: 이러한 브라우저들은 따옴표로 파일명을 감싸줍니다.
$fileName = "\"" . $fileKor . ".zip" . "\"";
이러한 방법을 사용하면, 다양한 브라우저에서 한글 파일명을 정상적으로 다운로드 받을 수 있습니다.
파일명 인코딩의 올바른 처리는 사용자 경험을 크게 향상시킬 수 있습니다.
반응형
'IT > Others' 카테고리의 다른 글
[GIT] git clean 주의사항 (0) | 2023.03.23 |
---|---|
[GIT] git 기초 사용법 (0) | 2023.02.22 |
[JAVASCRIPT] IE backspace 뒤로가기 없애기 (0) | 2022.10.19 |
[JAVASCRIPT] a href 링크 기능 없애기 (0) | 2022.08.12 |
[PHP] CSV 파일 (0) | 2022.07.28 |