개발/php

[php] csv 파일 다운 한글 깨짐 해결 방법

반응형

 

온라인상에서 csv파일로 데이터를 다운받게하면 종종 한글이 깨져보일 때가 있다. 메모장으로 열어서 EUC-KR로 변경한 뒤 저장한다음 엑셀로 여는 방법도 있지만, 일일히 변경해서 열려면 번거롭다. 한글이 깨져보이지 않고 csv 파일을 다운 받을 수 있도록 아래 코드들을 추가하여 해결이 가능하다.

 

1) charset을 UTF-8로 설정한다.

header('Content-type: text/csv; charset=utf-8');

 

2) header아래쪽에 echo "\xEF\xBB\xBF";  한줄(엔티안이라고 부른다고 한다)을 추가한다.

echo "\xEF\xBB\xBF";

 

* 참고로 \xEF\xBB\xBF 이 문자는 UTF-8을 16진수로 표기한 것인데, 특정 문구를 넣어서 문서가 제대로된 캐릭터셋 값을 가지도록 하는 역할을 한다고 한다.

 

 

적용 예시

header('Content-Encoding: utf-8');
header('Content-type: text/csv; charset=utf-8');  //추가
header('Content-Disposition: attachment;filename="'.$filename.'"');
echo "\xEF\xBB\xBF"; //추가

 

 

 

이렇게 넣어주면 깨진 한글도 잘 나오게 다운받아진다!

반응형