본문 바로가기

Linux

csv 파일(UTF-8) 엑셀에서 한글 깨질때

리눅스(UTF-8기반)에서 csv 파일을 만들어, 리눅스 상에서 볼때는 한글이 문제없이 출력되었다.

그런데 윈도우로 파일을 옮겨서 볼때, 아래와 같은 문제가 발생했다.


1. 리눅스에서 만든 csv파일을 엑셀(window os)에서 열때, 한글이 깨진다.

2. 메모장(window os)에서 파일을 열때는 한글이 깨지지 않는다. ㅡㅡ

3. 메모장에서 저장 후(아무런 변경없이 저장만 했음) 엑셀에서 열때에는 한글이 깨지지 않는다.


iconv를 이용해 UTF-8을 EUC-KR로 변경할 경우, 엑셀에서도 한글이 깨지지는 않지만, 

다국어를 지원할 경우, 'EUC-KR' 부분이 마음에 걸려, 이 방법은 사용하지 않기로 결정.


이 모든 상황에 원인은 엑셀에서 UTF-8형식의 csv파일을 제대로 인식하지 못한다는 것.


해결방안 : csv파일을 만들때, 제일 처음 "\xEF\xBB\xBF"를 입력하면, 엑셀에서 UTF-8 csv파일을 제대로 인식한다. 

               (위 해결방안 참조하여 읽어보기 :http://blog.wystan.net/2007/08/18/bom-byte-order-mark-problem)

               (명시적으로 UTF-8 표시)


ex)

FILE *fp;

fp = fopen(.......);


fputs("\xEF\xBB\xBF",fp); //이렇게 하면 엑셀에서 UTF-8 csv파일을 제대로 인식하여 한글이 깨지지 않는다.



※ 아래는 참조용.. iconv사용하여, char encoding 변환 (출처: http://minimonk.tistory.com/1543)