어제 제 블로그의 제목과 카테고리를 파이썬으로 웹크롤링 (웹 스크래핑)해서 CSV 파일을 만든 다음에 이를 엑셀 파일로 여는 과정에 대해서 설명을 드렸습니다.
자세한 내용은 아래 참조하세요.
그런데 이 과정에서 한 가지 문제를 겪었습니다. 바로 파이썬으로 만든 CSV 파일의 한글이 아래와 같이 깨어져 보이는 것입니다.
어렵게 코딩을 했는데 마지막 단계에서 에러가 발생하니 살짝 화가 나기도 했지만 해결책을 비교적 쉽게 찾을 수 있었습니다.
■ 최근에 "은퇴 준비"를 주제로 유튜브 채널을 시작했어요.
경험을 통한 유익한 정보를 많이 올려 보도록 할테니 관심 부탁드려요. (좋아요!, 구독!)
1) 원인
이 문제는 한글을 인코딩하고 디코딩할 때 다른 규격을 적용해서 생기는 문제였습니다.
파이썬으로 CSV 파일을 만들 때는 아래와 같이 "utf-8" 규격으로 인코딩을 했습니다.
그런데 엑셀에서 CSV 파일을 열 때는 아래와 같이 "949 : 한국어"의 ANSI 코드로 디코딩을 하도록 되어 있는 모양입니다.
그래서 결국 영문과 숫자는 상관없지만 한글은 깨어져 보이게 됩니다.
2) 해결 방법
원인으로 보면 2가지 해결책이 있습니다
제1의 방법 : "utf-8" 방식으로 되어 있는 CSV 파일을 어떤 중계 수단을 이용해서 "ANSI" 포맷으로 바꾸어 저장하고 이를 엑셀에서 여는 방법
제2의 방법 : "utf-8" 방식으로 되어 있는 CSV 파일을 엑셀에서 열 때 디코딩 방법을 디폴트인 "ANSI"가 아닌 "utf-8"방식으로 하도록 옵션을 설정하는 방법
3) 실행 방법
◎제1의 방법
가장 간단한 방법은 "중계 수단"으로 "윈도우의 메모장"을 활용하는 방법입니다.
메모장으로 CVS 파일을 읽어 와서 "다른 이름으로 저장"을 실행할 때 인코딩 옵션에서 "ANSI"를 선택해 주고 저장합니다. 그러면, 이 한글이 "ANSI"포맷으로 변환되었으므로 엑셀에서 아무 문제없이 열립니다.
아주 간단합니다.
▼ CVS파일 오픈 → 다른 이름으로 저장 → 인코딩 → ANSI → 저장
▼ 이 파일을 엑셀에서 열면 한글이 정상적으로 보입니다.
◎ 제2의 방법
▼엑셀을 실행한 다음 "데이터" → "텍스트"를 선택
▼오픈할 CSV 파일을 선택 → 가져오기 선택
▼디코딩 옵션으로 "65001:유니코드(UTF-8)를 선택 → 다음
▼ 구분 기호에 "기타"를 선택하고 공백란에 ", (쉼표)"를 넣어줌 → 다음
▼ 다음 단계는 건너뜀 → 다음
▼ 데이터가 들어갈 위치로 "새 워크시트"를 선택 → 확인
▼ 아래와 같이 한글이 정상적으로 열립니다.
이상으로 CSV파일을 엑셀로 열 때 한글이 깨짐 현상을 개선하는 방법에 대해서 살펴보았습니다.
감사합니다.
Updated on 7/30/2020 : 제 3의 방법이 한가지 더 있습니다.
Encoding 방법을 엑셀에서 읽을 수 있도록 지정합니다. 아래 캡처 화면처럼 encoding = "utf-8-sig"로 지정합니다.