티스토리 뷰
업무를 하다보면 종종 데이터를 엑셀파일(xls, xlsx)이 아닌 csv 파일로 export할 때가 있다.
한국 웹사이트에서 데이터를 csv 파일로 export 받으면 한글이 깨지지 않곤 하는데 이상하게(100% 장담은 못 한다.) 글로벌 서비스에서 csv 파일로 데이터를 export 하고 Microsoft Excel로 열었을 때 한글이 이상하게 깨진다. 왜일까?
export한 CSV 파일이 깨지는 이유
이 이유는 encoding 방식에 있다. 보통 글로벌 서비스에서는 한글로 csv로 export 하면 'UTF-8'로 인코딩 된 파일을 떨궈준다.
하지만, 이 csv 파일을 Microsoft Excel 프로그램으로 열었을 시 MS Excel 프로그램에서 csv 파일은 'ANSI'라는 인코딩 방식으로 자동 인식해서 'UTF-8'로 인코딩 된 파일을 'ANSI'로 읽어 한글이 깨지는 것이다.
그래서 맥에서 기본으로 설치되어 있는 별도 엑셀 프로그램으로 export한 csv 파일을 열었을 경우 한글이 한 깨지는 등 Microsoft Excel 프로그램이 아닌 타 프로그램으로 csv 파일을 열었을 경우 한글이 안 깨질 수도 있다.
export한 csv파일의 한글깨짐 해결 방법
이렇게 인코딩이 맞지 않아서 MS Excel에서 한글이 깨지는 것을 해결하는 방법은 두 가지가 있다.
1. 파일 자체의 인코딩 방식을 ANSI로 변경
메모장이나 워드패드와 같이 text의 인코딩을 변경해서 저장할 수 있는 프로그램을 이용하는 방법이다.
메모장이나 워드패드와 같이 text를 확인하는 프로그램으로 한글이 깨진 파일을 연다.
파일 > 다른 이름으로 저장... 을 클릭한다.
다른 이름으로 저장하는 창에서 파일명 및 확장자는 똑같이 입력해 덮어씌어지게 하되 아래의 인코딩을 UTF-8에서 ANSI로 변경해준다.
그 후 해당 파일을 MS Excel로 열어보면 파일의 인코딩이 ANSI로 변경되어 아래와 같이 깨졌었던 한글이 정상적으로 나오는 것을 확인할 수 있다.
2. MS Excel 프로그램에서 csv 데이터를 UTF-8 인코딩으로 인식해서 가져오기
엑셀 프로그램의 csv 파일 기본 인코딩을 변경하지는 못하지만 데이터 가져오기를 통하면 가져온 텍스트 데이터의 인코딩을 지정할 수 있는 점을 이용하는 방법이다.
데이터 > 텍스트를 클릭한다.
텍스트 마법사 1단계에서 인코딩을 '유니코드(UTF-8)'로 선택해준다.
csv 확장자 자체는 'comma-separated variables'를 의미 하므로 텍스트 마법사 2단계에서 구분 기호로 쉼표를 체크한다.
밑에 열이 구분된 미리보기가 나타나는데 그걸 보고 내가 맞는 구분 기호를 선택했는지 확인할 수 있다.
그 밖에 3단계에서 각 열의 데이터 서식을 설정하고 맨 마지막에 데이터를 표시할 위치를 선택하면 끝이다.
그러면 아래와 같이 한글이 깨지지 않고 데이터가 잘 나오는 것을 확인할 수 있다.
참고로 이렇게 데이터를 가져올 경우 원본 csv 파일을 가져온 것이 아니므로 수정을 하면 다른이름으로 저장이 뜨며 새로운 파일로 저장하게 되어 있다. 이 때 당황하지 않고 원본 파일에 덮어씌우며 저장하면 원본 파일을 다시 더블클릭 했을 때 인코딩이 UTF-8로 바뀐 상태여서 한글이 깨지지 않고 잘 파일을 읽어올 수 있다.
한글이 깨지는 csv 파일의 크기가 너무 커서 위의 방법들을 이용할 수 없다면 MS Excel이 아닌 다른 방법을 이용하길 추천한다.
(csv 파일을 꼭 MS Excel로 다뤄야하는 것은 아니지 않은가...)
csv파일이 아닌 엑셀파일(xls, xlsx)로 export 할 수 있다면 해당 방법을 추천한다.
'소소한 Tip' 카테고리의 다른 글
Mac에서 IDE file 사용 시 발생하는 Operation not permitted error (0) | 2021.09.07 |
---|---|
공공 데이터를 얻을 수 있는 사이트들 (0) | 2021.08.17 |
Eclipse(이클립스) 워크스페이스의 빨간 세로 줄 없애기 (0) | 2021.07.28 |
Eclipse(이클립스) Dark 모드 설정하기 (0) | 2021.07.27 |
귀여운 이모지 단축키 (1) | 2021.07.17 |
- Total
- Today
- Yesterday
- k8s
- mockito
- Java
- 어노테이션
- PostgreSQL
- 메시지큐
- 역직렬화
- DATABASE
- 공간데이터
- JPA
- 스프링부트
- Intellij
- enum
- 캐싱
- springboot
- 데이터베이스
- Spring
- cache
- DB
- Caching
- eclipse
- HttpClient
- postgres
- 자바
- ssh
- 캐시
- 이클립스
- rabbitmq
- annotation
- MAC
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |