본문 바로가기
Dev/php

php 엑셀 다운로드 한글 깨짐 문제 해결

by 하양동백 2020. 9. 10.

목차

    php로 제작된 웹사이트에서 엑셀 다운로드를 받는데 한글로 된 엑셀 파일명이 깨지는 경우가 있다.

    문서 제목이 엑셀 다운로드이다보니, ms 엑셀 2010 다운 같은 것을 기대하고 들어온 분들이 많은 것 같다.
    그런 분들은 이 곳을 참조! 
     

    엑셀 2010 무료 다운

    엑셀 2010 무료 다운 파워포인트 2010 무료설치 마이크로소프트 엑셀 2010 무료 다운 로드 설치

    blog1.ezip2020.com

    예전에는 잘 되다가 갑자기 안된다는 보고가 생기는데, 그럴리는 없다. 

    처음부터 안되는 것이다.

    크롬 브라우저에서는 한글 파일명으로 엑셀 파일 다운로드가 가능하지만 IE에서는 한글 파일명의 한글이 깨지고 이상한 문자로 만들어서 엑셀 파일명까지 인식이 안되는 문제가 생긴다.

    보통 php 엑셀 다운로드 소스는 다음과 같이 구성될 때가 많다.

    ExcelHeader("한글명.xls");   
    
    function ExcelHeader($sFileName) {
    header("Content-type: application/vnd.ms-excel");
    header("Content-type: application/vnd.ms-excel; charset=utf-8");
    header("Content-Disposition: attachment;filename=\"" . $sFileName . "\"");
    }

    눈치 챘겠지만, 인터넷 브라우저에서 한글이 깨지는 문제는 인코딩 문제 때문이다.

    다음과 같이 처리하면 한글 깨짐이 해결된다.

    function ExcelHeader($sFileName) {
      $excelnm = iconv('UTF-8','EUC-KR',$sFileName);   -- 추가 
      header("Content-type: application/vnd.ms-excel");
      header("Content-type: application/vnd.ms-excel; charset=utf-8");
      header("Content-Disposition: attachment;filename=\"" . $excelnm . "\"");  --변수 변경
    }

    크롬은 당연히 잘 되고, 적어도 IE11과 엣지에서도 액셀 다운로드시 한글 깨짐은 해결되었다.

     

     

    반응형

    댓글