CSV 한글이 깨지거나 물음표로 보일 때 원인과 해결법
고객 목록을 내보내 다른 곳에서 열었더니 ‘김민수’가 깨진 문자나 물음표로 보입니다. 데이터가 망가진 것은 아닐 수 있습니다. 쓸 때와 다른 문자 인코딩으로 바이트를 읽었기 때문일 수 있습니다.
업데이트:
원인: 같은 글자에 서로 다른 인코딩 사용
CSV는 문자 인코딩 설명이 없는 일반 텍스트일 수 있습니다. 오늘날 대부분은 한글 한 글자를 여러 바이트로 나타내는 UTF-8을 씁니다. 오래된 한국어 Windows 프로그램은 EUC-KR 또는 그 확장인 CP949를 쓰고 구형 Excel도 시스템 코드페이지를 따라 추측할 수 있습니다.
UTF-8을 EUC-KR이나 CP949로 읽으면 한글이 무관한 문자 조합으로 바뀝니다. 반대로 EUC-KR 또는 CP949를 UTF-8로 읽으면 바이트가 유효하지 않아 물음표, 대체 기호, 깨진 글자로 나타납니다.
흔한 상황
쇼핑몰, CRM, 웹 양식이 UTF-8을 내보내도 파일을 두 번 눌러 연 Excel이 오래된 코드페이지를 쓰면 한글이 깨집니다. Excel 버전에 따라 파일 시작에 BOM이라는 보이지 않는 표시가 있을 때만 UTF-8로 자동 인식합니다.
반대도 생깁니다. Excel이 전통 CSV로 EUC-KR 또는 CP949를 저장했는데 뉴스레터 도구나 스크립트가 UTF-8을 기대하면 이름이 물음표로 보입니다.
구분 기호 문제도 있습니다. 쉼표, 세미콜론, 탭을 잘못 판단하면 모든 값이 한 열에 들어가지만 이것은 문자 인코딩 손상이 아닙니다.
Excel에서 UTF-8 파일 제대로 열기
파일을 두 번 누르지 말고 가져오세요. 그러면 Excel이 추측하는 대신 인코딩과 구분 기호를 지정할 수 있습니다.
- Excel에서 빈 통합 문서를 엽니다.
- ‘데이터’에서 ‘텍스트/CSV에서’를 선택하고 파일을 고릅니다.
- ‘파일 원본’을 ‘65001: Unicode (UTF-8)’로 설정하고 미리 보기에서 김민수가 바르게 보이는지 확인합니다.
- 열이 나뉘지 않았다면 올바른 구분 기호를 고르고 데이터를 불러옵니다.
- 다음 프로그램도 제대로 읽도록 저장할 때 ‘CSV UTF-8’을 사용합니다.
오래된 Excel CSV를 UTF-8로 바꾸기
EUC-KR 또는 CP949 파일은 Excel 가져오기에서 해당 한국어 코드페이지를 명시한 뒤 ‘CSV UTF-8’로 다시 저장하는 것이 기본 경로입니다. 데이터 형식 변환기는 UTF-8을 먼저 시도하고 실패하면 Windows-1252로만 되돌아가므로 EUC-KR이나 CP949를 읽지 못합니다. 한글 CSV 복구에 이 도구를 사용하지 마세요. 유효한 UTF-8 또는 Windows-1252 파일이라면 CSV, JSON 등의 UTF-8 출력과 구분 기호 감지는 가능합니다.
같은 파일을 잘못된 방향으로 여러 번 바꾸면 글자가 영구 손상될 수 있습니다. 처음 내보낸 파일에서 시작하고 사본을 먼저 보관하세요.
내용이 바뀌지 않았는지 확인하기
변환 뒤에는 인코딩만 달라지고 내용은 같은지 확인해야 합니다. 고객 번호 같은 키 열을 기준으로 두 CSV 파일을 비교하면 변경 셀, 새 행, 빠진 행이 나열되어 목록을 쓰기 전에 잘못된 가져오기를 발견할 수 있습니다.
