가이드

CSV 글자 깨짐 원인과 해결 방법 (한글 깨짐 포함)

Opener 팀5분 분량

“é“나 “Сума” 같은 이상한 문자는 CSV를 한 가지 텍스트 인코딩으로 저장했는데 다른 인코딩인 것처럼 열었다는 뜻이에요. 글자는 여전히 파일 안에 있고, 잘못 해석되고 있을 뿐이에요. 올바른 인코딩으로 열고(CSV 뷰어는 자동으로 감지해요) UTF-8 사본을 저장하세요. 물음표(“????”)는 경우가 달라요. 보통 파일을 저장할 때 이미 글자가 사라졌다는 뜻이에요.

1분 만에 이해하는 인코딩

CSV 파일은 일반 텍스트이고, 디스크에서 텍스트는 그저 숫자(바이트)의 나열이에요. 인코딩은 어떤 숫자가 어떤 글자를 뜻하는지 정해 둔 표예요. 기본 영문자와 숫자는 거의 모든 인코딩이 똑같이 처리하기 때문에, 은행에서 내보낸 파일의 금액은 멀쩡한데 이름과 적요만 엉망이 되는 거예요.

회계 프로그램과 은행에서 내보낸 파일에서 만나게 되는 대표적인 인코딩은 이래요.

한국어 CSV라면 하나가 더 있어요. 국내 프로그램과 예전 방식으로 저장한 Excel 파일은 EUC-KR 또는 이를 확장한 CP949(Windows의 한국어 인코딩)를 쓰는 경우가 많아요. “CSV 한글 깨짐”의 상당수가 UTF-8과 CP949가 서로 엇갈려서 생겨요.

파일 자체에는 보통 어떤 인코딩을 쓰는지 적혀 있지 않아요. 파일을 여는 프로그램이 추측해야 하고, 추측이 틀리면 모지바케(mojibake)가 생겨요. 이렇게 깨진 텍스트를 부르는 기술 용어예요.

깨진 글자 읽기: 패턴별 의미

어떤 식으로 깨졌는지가 무엇이 잘못됐는지 알려 주는 단서예요.

보이는 것 원래 글자 원인
é, ü, € é, ü, € UTF-8 파일을 Windows-1252로 열었음
Сума (Ð와 Ñ가 많음) Сума UTF-8 키릴 문자를 Windows-1252로 열었음
Ñóìà (악센트 붙은 라틴 문자) Сума Windows-1251 파일을 Windows-1252로 열었음
Cafй Café Windows-1252 파일을 Windows-1251로 열었음
� (물음표가 든 검은 마름모) 아무 글자 레거시 인코딩 파일을 UTF-8로 열었음
???? 아무 글자 파일을 저장할 때 글자가 사라졌음

“Ô + 무언가, 또는 “Д/“Ñ” + 무언가 같은 쌍은 UTF-8을 레거시 인코딩으로 읽었다는 표시예요. UTF-8에서는 영문자가 아닌 글자 하나가 2바이트인데, 예전 표는 각 바이트를 별개의 기호로 보여 주거든요. 좋은 소식이에요. 사라진 건 없고, 파일을 UTF-8로 열면 해결돼요.

CP949로 저장된 한국어 파일을 UTF-8로 열 때도 �가 잔뜩 나타나요. 이 경우도 글자는 파일 안에 그대로 있으니 한국어 인코딩으로 다시 열면 돼요.

그냥 물음표는 나쁜 소식이에요. 보통 어떤 프로그램이 해당 글자를 담을 자리가 없는 인코딩으로 텍스트를 저장하려다가(예: 키릴 문자나 한글을 Windows-1252로) 그 글자를 전부 ?로 바꿔 버렸을 때 나타나요. 원래 글자가 더 이상 파일 안에 없으니 어떤 뷰어도 되살릴 수 없어요. 원본 시스템에서 다시 내보내는 게 해결책이에요. 내보내기 창에 옵션이 있다면 UTF-8이나 알맞은 지역 인코딩을 고르세요.

BOM: Excel이 UTF-8을 잘못 읽는 이유

UTF-8 파일은 바이트 순서 표시(BOM)라는 보이지 않는 3바이트로 시작할 수 있어요. “이 파일은 UTF-8이에요”라고 알려 주는 힌트예요.

CSV를 더블클릭하면 Excel은 이 힌트에 크게 의존해요. BOM이 있으면 보통 UTF-8을 제대로 읽지만, 없으면 컴퓨터의 레거시 인코딩(한국어 Windows라면 CP949)이라고 가정하는 경우가 많아요. 은행에서 받은 멀쩡한 UTF-8 파일이 “Сума“로 바뀌거나 한글이 깨져 보이는 게 바로 이 때문이에요. 다른 프로그램은 반대로 동작해서 첫 번째 열 머리글 앞에  같은 쓰레기 문자로 BOM을 보여 주기도 해요. 이게 보인다면 파일은 UTF-8이고, BOM이 텍스트로 표시되고 있는 거예요.

해결 방법 1: 자동 감지로 열기

가장 빠른 방법은 인코딩 감지를 도구에 맡기는 거예요. Opener CSV 뷰어는 먼저 UTF-8을 시도하고, 텍스트에 따라 Windows-1251이나 Windows-1252로 전환하기 때문에 가져오기 마법사 없이도 이름과 적요가 제대로 보여요. 쉼표, 세미콜론, 탭, 파이프 같은 구분자도 감지해요.

다만 자동 감지되는 인코딩은 이 세 가지뿐이에요. EUC-KR/CP949로 저장된 한국어 CSV라면 아래의 Excel, LibreOffice, 텍스트 편집기 방법으로 먼저 UTF-8로 바꾸세요.

파일은 브라우저에서 읽히고 어디에도 업로드되지 않아요. 급여, 세금계산서, 은행 거래 내역이라면 중요한 점이죠. 다른 프로그램에서 쓸 수 있게 파일을 고치려면 내보내기 버튼을 누르세요. 표의 깨끗한 UTF-8 사본을 받을 수 있어요(현재 보기 기준이니, 모든 행이 필요하다면 먼저 검색어를 지우세요). 글자가 깨지는 게 아니라 모든 내용이 한 열에 몰리는 문제라면 CSV가 한 열로 열리는 이유를 보세요.

해결 방법 2: Excel에서 알맞은 “파일 원본”으로 가져오기

파일을 더블클릭하지 마세요. 대신 빈 통합 문서를 열고 데이터 탭의 “텍스트/CSV에서” 가져오기를 쓰세요. 미리보기 창에 인코딩을 고를 수 있는 파일 원본 목록이 있어요.

항목을 바꿔 가며 미리보기를 지켜보세요. 이름이 제대로 보이는 순간 그게 맞는 인코딩이에요. 그다음 데이터를 불러오세요. 파일을 다른 사람에게 보내야 한다면 Excel에서 그냥 “CSV”가 아니라 “CSV UTF-8” 파일 형식으로 저장하세요. 그냥 “CSV”는 다시 레거시 인코딩(한국어 Windows에서는 CP949)을 쓸 수 있어요.

해결 방법 3: Google Sheets, LibreOffice 또는 텍스트 편집기

Google Sheets. Google Sheets에서 CSV를 가져오면(파일 → 가져오기) UTF-8 파일은 잘 열리고, 가져오기 창에서 구분자도 고를 수 있어요. 레거시 파일에는 덜 믿음직한 방법이에요. Windows-1251, Windows-1252, CP949 파일이 여전히 깨져 보인다면 다른 방법으로 UTF-8로 바꾼 뒤 그 사본을 가져오세요.

LibreOffice Calc. CSV를 열면 LibreOffice가 “Character set”(문자 집합) 목록이 있는 텍스트 가져오기 창을 보여 줘요. 유니코드(UTF-8), 한국어, 키릴 문자(Windows-1251), 서유럽어(Windows-1252) 중에서 고르면 미리보기가 바로 바뀌어요. 무료이고 Windows, macOS, Linux에서 작동해요.

텍스트 편집기. Windows의 메모장, macOS의 텍스트 편집기, VS Code 같은 코드 편집기에서는 저장할 때 인코딩을 고를 수 있어요. 함정이 하나 있어요. 편집기가 먼저 올바른 인코딩으로 파일을 열어야 해요. 편집기에서 텍스트가 제대로 보이면 UTF-8로 저장하세요. 편집기에서도 이미 깨져 보인다면 저장해 봐야 깨진 글자가 그대로 남을 뿐이니, 먼저 올바른 인코딩으로 다시 여세요.

자주 묻는 질문

CSV의 “????“를 고칠 수 있나요?

대개는 안 돼요. 물음표는 파일을 쓸 때 글자가 바뀌어 버렸다는 뜻이라 원래 글자가 파일 안에 없어요. 회계 프로그램이나 은행에서 다시 내보내세요. 가능하면 UTF-8을 고르세요.

저장하거나 내보낼 때 어떤 인코딩을 써야 하나요?

UTF-8이요. 모든 문자를 담을 수 있고 현대 프로그램은 모두 이해해요. 동료들이 Excel에서 더블클릭해서 연다면, 파일이 BOM으로 시작하도록 Excel의 “CSV UTF-8” 옵션을 쓰세요.

인코딩을 바꾸면 숫자도 바뀌나요?

아니요. 숫자, 마침표, 쉼표는 UTF-8, Windows-1251, Windows-1252에서 똑같기 때문에 금액과 날짜는 영향을 받지 않아요. 기본 영문자가 아닌 글자만 바뀌어요.

은행 거래 내역 파일을 온라인에서 고쳐도 안전한가요?

도구가 파일을 업로드하지 않을 때만 그래요. CSV 뷰어는 파일 해석과 내보내기를 모두 브라우저 안에서 하기 때문에 거래 내역이 기기 밖으로 나가지 않아요.