IT/Others

PHP에서 브라우저 별 한글 파일명 인코딩 처리하기

승돌 2023. 2. 13. 16:03
반응형

웹 개발을 하다 보면, 다양한 브라우저에서 한글 파일명을 처리할 필요가 있습니다.

특히 다운로드 시 한글 파일명이 깨지는 문제는 많은 개발자들이 직면하는 일반적인 문제입니다.

 

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