엑셀 CSV 한글 깨질 때, UTF-8로 되살리는 법
![]()
안녕하세요, 깅글렛이에요.
쇼핑몰 주문내역이나 거래소·구글 연락처처럼 웹에서 내려받은 CSV 파일, 엑셀로 열었더니 한글이 전부 뷁뷁·ë°± 같은 외계어로 깨져 있던 적 있으시죠? 저도 처음엔 파일이 잘못 온 줄 알고 거래처에 다시 보내달라고 했었거든요.
그런데 CSV 한글 깨짐은 파일이 망가진 게 아니에요. 엑셀이 파일을 읽는 규칙만 UTF-8로 맞춰주면 한글이 그대로 살아나요.
왜 깨지는지 원인부터 상황별 해결법 4가지까지, 화면 순서 그대로 정리해볼게요.
CSV 한글 깨짐, 파일이 아니라 읽는 규칙 문제예요
먼저 안심되는 사실부터요. 쇼핑몰·거래소·구글처럼 웹에서 만들어진 CSV는 요즘 대부분 UTF-8이라는 국제 표준 방식으로 저장돼요. 한글 자체는 파일 안에 제대로 들어 있는 거예요.
문제는 여는 쪽이에요. 엑셀은 CSV를 더블클릭으로 열 때, 파일에 인코딩 표시가 따로 없으면 윈도우 기본값인 CP949로 읽어요. CP949는 한국어 윈도우의 기본 한글 문자 규칙인데, 화면에선 ’ANSI’로 표시되기도 해요. 파일은 UTF-8로 쓰여 있는데 엑셀은 CP949로 읽으니, 서로 규칙이 어긋나 글자가 깨지는 거예요.
📖 인코딩이란? 글자를 컴퓨터가 저장하고 읽는 규칙이에요. 쓸 때 규칙과 읽을 때 규칙이 다르면 글자가 깨져요.

외계어가 되는 원리도 단순해요. UTF-8은 한글 한 글자를 3바이트로 저장하는데, CP949는 2바이트씩 끊어 읽거든요. 3바이트짜리 글자를 2바이트씩 잘못 자르니 글자 경계가 어긋나서 뷁, ë° 같은 엉뚱한 글자가 나오는 거죠.

참고로 외계어가 아니라 ???(물음표)로 깨졌다면 원인이 달라요. 그건 읽기가 아니라 저장 단계 문제로, 한글을 못 담는 인코딩으로 내보내면서 글자가 물음표로 바뀐 흔적이에요. 구버전 엑셀로 만든 CSV에서 잦아요. 본문에 나온 비슷한 용어 네 개는 아래 카드로 정리했어요.

그럼 이제 깨진 한글을 실제로 살려볼게요. 파일을 안 건드리는 방법부터예요.
방법① 데이터 탭 가져오기 — 원본 안 건드리는 해결법
저도 이 문제를 몇 번 겪고 나서는 이 방법으로 정착했어요. 더블클릭 대신 엑셀의 ’가져오기’로 열면서 읽는 규칙을 UTF-8로 직접 지정하는 방식이에요. Microsoft 365 기준 순서예요.
-
빈 엑셀을 열고 상단 [데이터] 탭을 눌러요.
-
[데이터 가져오기 및 변환] 그룹에서 **[텍스트/CSV]**를 클릭해요.
-
깨졌던 CSV 파일을 골라 **[가져오기]**를 눌러요.
-
미리보기 창이 뜨면 왼쪽 위 [파일 원본] 드롭다운을 열어요.
-
목록에서 **
65001: 유니코드(UTF-8)**를 선택해요. 이 순간 미리보기의 한글이 바로 정상으로 바뀌어요. -
**[구분 기호]**가 쉼표로 돼 있는지 보고, 하단 **[로드]**를 누르면 끝이에요.
![방법① 단계 UI 목업 (시리즈 1/3) — 엑셀 리본 [데이터] 탭에서 [데이터 가져오기 및 변환] 그룹의 [텍스트/CSV] 버튼 하이라이트](/images/%EC%97%91%EC%85%80-CSV-%ED%95%9C%EA%B8%80%EA%B9%A8%EC%A7%90/body-4.webp)
![방법① 결정적 장면 (시리즈 2/3) — 미리보기 창 [파일 원본] 드롭다운에 65001: 유니코드(UTF-8) 크게 하이라이트, 아래 미리보기의 한글이 깨짐→정상으로 바뀐 대비](/images/%EC%97%91%EC%85%80-CSV-%ED%95%9C%EA%B8%80%EA%B9%A8%EC%A7%90/body-5.webp)
![방법① 마무리 (시리즈 3/3) — [구분 기호]=쉼표 확인 후 [로드] 버튼 클릭 → 시트에 정상 한글 표가 들어온 화면](/images/%EC%97%91%EC%85%80-CSV-%ED%95%9C%EA%B8%80%EA%B9%A8%EC%A7%90/body-6.webp)
화면이 위 설명과 다르면 구버전 엑셀(2016 이하 등)일 수 있어요. 그때는 **[데이터] → [텍스트]**를 누르면 ’텍스트 가져오기 마법사’가 떠요. 여기서도 똑같이 **[파일 원본]**에서 65001: 유니코드(UTF-8)을 고르고, 구분 기호를 쉼표로 하면 돼요.
이 방법의 장점은 원본 파일을 전혀 건드리지 않는다는 것. 대신 파일 자체는 그대로라서, 같은 파일을 계속 쓸 거면 열 때마다 가져오기를 거쳐야 하죠. 파일을 아예 고쳐두고 싶다면 다음 방법이 맞아요.
방법② 메모장 UTF-8(BOM) 저장→더블클릭 OK
이번엔 파일 자체를 고치는 방법이에요. 준비물은 윈도우에 기본으로 있는 메모장 하나예요.
-
깨진 CSV 파일에서 **마우스 우클릭 → [연결 프로그램] → [메모장]**을 선택해요.
-
메모장에선 한글이 정상으로 보일 거예요. 메모장은 UTF-8을 자동으로 알아보거든요. 여기서 멀쩡하게 보인다는 것 자체가 이 파일이 UTF-8이라는 증거예요.
-
**[파일] → [다른 이름으로 저장]**을 열어요.
-
저장 창 하단의 [인코딩] 드롭다운을 ’UTF-8’에서 **‘UTF-8(BOM)’**으로 바꾸고 저장해요. 메모장 버전에 따라 ’BOM 포함 UTF-8’로 표시되기도 해요.
이렇게 저장한 파일은 더블클릭만 해도 엑셀에서 한글이 안 깨져요. 차이를 만든 건 이름 뒤에 붙은 BOM이에요.
📖 BOM이란? 파일 맨 앞에 붙는 눈에 안 보이는 3바이트짜리 표식(EF BB BF)이에요. “이 파일은 UTF-8이야”라고 알려주는 꼬리표라서, 이게 있으면 엑셀이 더블클릭만으로도 UTF-8로 알아봐요.
![메모장 [다른 이름으로 저장] 대화상자 목업 — 하단 [인코딩] 드롭다운 펼침(ANSI / UTF-16 LE / UTF-16 BE / UTF-8 / UTF-8(BOM)) 중 UTF-8(BOM)에 선택 표시](/images/%EC%97%91%EC%85%80-CSV-%ED%95%9C%EA%B8%80%EA%B9%A8%EC%A7%90/body-7.webp)
![BOM 개념 카드 — CSV 파일 아이콘 맨 앞에 [EF BB BF] 3바이트 블록 + 말풍선 “이 파일은 UTF-8이야” + 하단 한 줄 “BOM = 엑셀이 알아보는 인코딩 꼬리표”](/images/%EC%97%91%EC%85%80-CSV-%ED%95%9C%EA%B8%80%EA%B9%A8%EC%A7%90/body-8.webp)
인코딩을 ’ANSI’로 바꾸라는 안내도 종종 보이는데, 저는 UTF-8(BOM)을 권해요. ANSI는 한글·영문만 있으면 통하지만, 이모지나 중국어가 섞인 파일은 저장하는 순간 그 글자들이 ?로 깨지거든요. 반대로 파이썬이나 데이터베이스 같은 일부 프로그램은 BOM이 붙어 있으면 첫 칸을 잘못 읽기도 해요. 그래도 ’엑셀에서 안 깨지게’가 목적이면 UTF-8(BOM)이 답이에요.
방법③ 저장은 ‘CSV UTF-8’ 형식 — 깨짐 예방
반대 방향 문제도 있어요. 내가 엑셀로 만든 CSV를 보냈더니 받는 쪽에서 깨지는 경우인데, 이건 저장 형식부터 봐야 해요.
엑셀에서 [파일] → [다른 이름으로 저장](또는 F12)을 열고, [파일 형식] 드롭다운에서 **CSV UTF-8(쉼표로 분리)(*.csv)**를 고르면 돼요. 이렇게 저장하면 BOM이 붙은 UTF-8 파일이 돼서, 엑셀에서 다시 열어도, 웹·맥·구글에서 열어도 안 깨져요.
함정은 이름이 비슷한 형식이 바로 옆에 있다는 점이에요. 그냥 **CSV(쉼표로 분리)(*.csv)**를 고르면 CP949로 저장돼서, 내 컴퓨터에선 멀쩡한데 받는 쪽에서 깨질 수 있어요. 저장할 때 ’UTF-8’이 붙은 쪽인지 한 번만 확인하세요.

참고로 윈도우에서 CSV UTF-8로 저장하면 구분 기호는 따로 못 고르고 지역 설정에 따라 자동으로 정해져요. 한국 설정에선 쉼표예요.
방법④ 구글 시트는 자동 인식 — 넷 중 뭘 쓸까요?
엑셀 메뉴 자체가 낯설거나 급할 땐 구글 시트가 편해요. 구글 스프레드시트에서 새 시트를 열고 [파일] → [가져오기] → [업로드] 탭으로 깨진 CSV를 올려요. 이어서 **[데이터 가져오기]**를 누르면 끝이에요. 구글 시트는 인코딩을 자동으로 감지해서, 뭘 고를 필요 없이 한글이 정상으로 떠요.
엑셀 파일이 필요하면 **[파일] → [다운로드] → [Microsoft Excel(.xlsx)]**로 다시 받으면 되고요. 저도 급할 때 몇 번 이렇게 처리했는데, 인코딩이 뭔지 몰라도 되니 편하더라고요. 다만 구글 계정이 필요하고 파일을 클라우드에 올리는 방식이라, 고객 정보 같은 민감한 데이터는 올리기 전에 한 번 더 생각해보세요.
이제 넷 다 나왔으니 상황별로 정리할게요.
-
받은 파일을 한 번만 확인할 때 → 방법① 가져오기 (원본 보존, 제일 확실)
-
같은 파일을 계속 더블클릭해 쓸 때 → 방법② 메모장 UTF-8(BOM) 저장 (파일 자체를 고침)
-
내가 만들어 남에게 보낼 때 → 방법③ ‘CSV UTF-8(쉼표로 분리)’ 형식으로 저장 (예방)
-
메뉴가 어렵거나 급할 때 → 방법④ 구글 시트 업로드 (설정 없음, 민감 데이터만 주의)

결론: 한 번만 볼 파일은 ①, 계속 쓸 파일은 ②, 내가 보낼 파일은 ③으로 기억하면 돼요.
전화번호 0 사라짐, [데이터 형식 감지]만 끄면 돼요
한글을 살리고 나면 하나 더 챙길 게 있어요. CSV를 열 때 전화번호 010-1234-5678이 1012345678로, 우편번호 05000이 5000으로 바뀌는 증상이에요. 엑셀이 각 열을 자동으로 ’숫자’로 인식하면서, 숫자에선 의미 없는 앞자리 0을 지워버리기 때문이거든요.
✍️ 저는 거래처 연락처 명단을 정리하다가 전화번호 첫 자리 0이 다 날아간 걸 한참 뒤에야 발견했어요. 이미 원본 CSV를 지운 뒤라 다시 요청하느라 민망했죠. 그 뒤로는 CSV를 가져올 때 데이터 형식 감지부터 끄는 게 습관이 됐어요.
이건 방법①의 가져오기 창에서 같이 해결할 수 있어요. 미리보기 창의 [데이터 형식 감지] 드롭다운을 **‘데이터 형식을 검색하지 않음’**으로 바꿔보세요. 모든 열이 텍스트로 들어와서 0이 그대로 남아요. 더 꼼꼼하게 하려면 [로드] 대신 **[데이터 변환]**을 눌러요. 파워 쿼리(엑셀에 내장된 데이터 정리 편집기)가 열리는데, 거기서 그 열의 데이터 형식을 **[텍스트]**로 지정하면 되고요.
가져오기 없이 직접 입력할 때는 값을 넣기 전에 셀 범위를 잡고 **Ctrl+1 → [표시 형식] → [텍스트]**로 바꿔두면 돼요. 아니면 값 앞에 아포스트로피(’)를 붙여 ’010-1234처럼 입력해도 0이 살아 있어요. 화면에는 ’가 안 보여요.
![[데이터 형식 감지] 설정 목업 — 가져오기 미리보기 창에서 [데이터 형식 감지] 드롭다운을 ’데이터 형식을 검색하지 않음’으로 선택 + 옆에 우편번호 05000이 그대로 유지된 셀](/images/%EC%97%91%EC%85%80-CSV-%ED%95%9C%EA%B8%80%EA%B9%A8%EC%A7%90/body-11.webp)
깅글렛 한줄평
💬 깨진 CSV 받고 “다시 보내주세요” 안 해도 돼요. 파일은 멀쩡하니까, 다음부터는 더블클릭 대신 데이터 탭부터 눌러보세요.
자주 묻는 질문
Q1. 분명 UTF-8로 저장했는데 엑셀에서 열면 또 깨져요.
BOM 없는 UTF-8일 가능성이 높아요. 요즘 메모장은 기본 저장이 ’BOM 없는 UTF-8’이라(윈도우10 1903 버전부터), 그냥 UTF-8로 저장하면 엑셀이 못 알아봐요. [다른 이름으로 저장]에서 인코딩을 ’UTF-8(BOM)’으로 고르면 해결돼요.
Q2. 외계어가 아니라 ???(물음표)로 깨져 있어요.
그건 여는 규칙 문제가 아니라, 저장할 때 한글을 못 담는 인코딩으로 내보내면서 글자가 이미 물음표로 바뀐 경우예요. 구버전 엑셀로 만든 CSV에서 잦은 증상이라, 파일을 만든 쪽에서 UTF-8 형식으로 다시 내보내 받는 게 답이에요.
Q3. 방법①로 열면 매번 그렇게 열어야 하나요?
네, 방법①은 원본을 안 고치니까 그 파일은 계속 가져오기로 열어야 해요. 번거로우면 방법②로 파일을 UTF-8(BOM)으로 한 번 고쳐두세요. 그 뒤로는 더블클릭으로 열어도 안 깨져요.
마무리

CSV 한글 깨짐은 원리를 한 번 알아두면 다음부터는 헤맬 일이 없어요. 오늘 정리한 4가지 중에 본인 상황에 맞는 하나만 기억해두세요.
※ 본 글은 2026년 7월 기준, Microsoft 365 엑셀 화면을 기준으로 작성됐어요. 메뉴 이름·위치는 엑셀 버전에 따라 조금 다를 수 있어요.