PRELAPS 깨진 글자 복구기

엑셀에서 CSV 한글이 깨질 때

CSV 파일을 엑셀로 열었더니 ë³´ê³ ì„œº¸°í¼­ 처럼 나오는 경우입니다. 메모장으로 같은 파일을 열면 멀쩡한 한글이 보이는데 엑셀에서만 깨진다면, 파일이 아니라 엑셀이 원인입니다.

왜 엑셀에서만 깨지나

컴퓨터는 글자를 숫자로 바꿔 저장하고, 그 대응표가 여러 가지입니다. 요즘 표준은 UTF-8 이고 한국 윈도우가 오래 쓰던 표는 EUC-KR(CP949)입니다. 같은 숫자라도 어느 표로 읽느냐에 따라 다른 글자가 나옵니다.

문제는 CSV 파일 안에 "나는 UTF-8 이다" 라고 적는 자리가 없다는 것입니다. 그냥 글자만 죽 들어 있습니다. 그래서 프로그램마다 알아서 추측하는데, 메모장은 요즘 UTF-8 을 잘 알아보지만 엑셀은 표시가 없으면 한국어 윈도우 코드페이지로 읽어버립니다. UTF-8 로 저장된 한글을 EUC-KR 표로 읽으니 엉뚱한 글자가 나옵니다.

웹사이트나 파이썬 스크립트에서 내려받은 CSV 가 유독 자주 깨지는 것이 이 때문입니다. 그런 도구들은 대부분 UTF-8 로 저장하는데, 표시를 안 붙입니다.

BOM 세 바이트가 해결합니다

BOM(Byte Order Mark)은 파일 맨 앞에 붙는 세 바이트짜리 표시입니다. 눈에는 안 보이고 내용도 바꾸지 않지만, 이게 있으면 엑셀이 "아, UTF-8 이구나" 하고 제대로 읽습니다.

즉 깨진 CSV 를 고치는 일은 대부분 글자를 바꾸는 게 아니라 표시를 붙이는 일입니다. 파일 내용은 처음부터 멀쩡했으니까요.

이 도구로 고치는 법

깨진 글자 복구기를 열고 파일 탭을 고른 뒤 CSV 를 올리세요. 인코딩을 판별해 후보를 보여줍니다. 한글이 제대로 보이는 후보를 골라 UTF-8 로 받기를 누르면 됩니다.

「엑셀에서 열 파일이면 BOM 붙이기」 체크박스가 켜져 있는지 확인하세요. .csv·.tsv·.txt 는 기본으로 켜져 있습니다. 이걸 켠 채로 받은 파일은 엑셀에서 바로 열어도 안 깨집니다.

파일은 서버로 올라가지 않습니다. 브라우저 안에서만 처리되므로 사내 자료나 개인정보가 든 파일도 그대로 쓰셔도 됩니다.

파일 자체가 옛날 인코딩인 경우

반대 상황도 있습니다. 오래된 프로그램이 만든 CSV 는 실제로 EUC-KR 로 저장돼 있는데, 이걸 UTF-8 로 읽는 프로그램에 넣으면 깨집니다. 요즘 파이썬·구글 스프레드시트·맥 numbers 에서 열 때 이런 일이 납니다.

이 경우도 같은 방법으로 풀립니다. 파일 탭에 올리면 euc-kr 후보가 1순위로 나오고, UTF-8 로 받으면 요즘 도구들이 읽을 수 있는 파일이 됩니다. 어느 방향이든 파일 탭에 올려보는 것이 먼저입니다 — 어느 쪽인지 도구가 판별해줍니다.

다시 안 깨지게 저장하려면

엑셀에서 만든 표를 남에게 줄 때는 다른 이름으로 저장 → 파일 형식에서 「CSV UTF-8(쉼표로 분리)」 를 고르세요. 그냥 「CSV(쉼표로 분리)」 는 EUC-KR 로 저장돼서, 받는 사람이 맥이나 리눅스를 쓰면 거기서 깨집니다.

직접 파일을 만드는 쪽이라면 UTF-8 로 저장하되 BOM 을 붙이는 옵션을 켜두면 됩니다. 파이썬이면 encoding='utf-8-sig' 입니다.

이래도 안 될 때

엑셀에서 열었을 때 글자는 멀쩡한데 한 칸에 다 들어가는 경우는 인코딩 문제가 아니라 구분자 문제입니다. 데이터 탭의 「텍스트 나누기」로 쉼표를 구분자로 지정하면 됩니다.

복구 후보 어디에도 제대로 된 한글이 없다면, 파일이 만들어질 때 이미 글자가 깨진 상태였을 수 있습니다. 그때는 복구기 본문의 「복구가 안 되나요」 부분을 보세요 — 증상별 원인과 대처가 정리돼 있습니다.