CSV 한글 깨짐, 상황별 해결
CSV 한글 깨짐은 엑셀에서 저장할 때도, 받은 CSV를 열 때도 생긴다. 원인이 파일인지 여는 방법인지 가려내고 엑셀에서 볼 파일과 사이트에 올릴 파일을 각각 어떻게 저장해야 하는지 다룬다. 전화번호 앞 0이 사라지거나 날짜가 45292 같은 숫자로 바뀌는 문제도 함께 푼다.
대부분은 파일이 손상된 것이 아니다. 저장한 쪽과 여는 쪽이 서로 다른 규칙으로 글자를 읽고 있을 뿐이다. 다만 깨진 채로 다시 저장하면 그때부터는 정말 망가진다. 깨진 글자를 보면 받는 사람도 똑같이 볼까 걱정부터 되는데 네이버 지식iN의 이 질문이 그랬다.
한글이 깨지더라고요(꿹벩 이런식으로)... 교수님이 여실 때도 깨진 엑셀 파일로 열리겠죠?
조회 1,760
답은 어떻게 저장했고 상대가 어떻게 여느냐에 달렸다. 아래에서 원인, 용도별 저장법, 상대가 열 때의 방법을 차례로 본다.
CSV 한글 깨짐, 왜 한글만 깨지나
CSV는 글자를 그대로 나열한 텍스트 파일이다. 그런데 파일 안에는 "이 파일은 어떤 규칙으로 글자를 담았다"는 표시가 들어 있지 않다. 여는 프로그램이 짐작해야 한다.
영어와 숫자는 어떤 규칙으로 읽어도 같은 글자가 나온다. 한글은 규칙마다 다른 결과가 나온다. 그래서 한글만 깨진다.
| 규칙 | 쓰이는 곳 |
|---|---|
| UTF-8 | 요즘 표준. 웹·맥·리눅스·대부분의 시스템 |
| UTF-8 BOM | UTF-8인데 맨 앞에 "UTF-8"이라는 표시를 붙인 것. 윈도우 엑셀이 알아본다 |
| EUC-KR (CP949) | 예전 한국 표준. 한국어 윈도우 메모장에서 "ANSI"라고 부르는 것이 이것이다. 오래된 국내 시스템이 요구한다 |
엑셀에서 볼 CSV vs 사이트에 올릴 CSV
유튜브에서 이 문제를 찾으면 조회수 1만 회가 넘는 영상이 나온다. CSV를 메모장으로 열어 인코딩을 ANSI로 바꿔 다시 저장하라는 방법이다. 엑셀에서 두 번 눌러 열 파일이라면 이 방법이 통한다. 한국어 윈도우의 엑셀은 BOM이 없는 CSV를 시스템 기본 인코딩, 즉 ANSI(CP949)로 읽으려 하기 때문이다.
문제는 같은 CSV를 쇼핑몰, 게시판, 회원 관리 프로그램 같은 곳에 올릴 때다. 웹 서비스의 업로드는 대부분 UTF-8을 기대한다. ANSI로 바꿔 올리면 엑셀에서 멀쩡하던 한글이 이번에는 사이트 쪽에서 깨진다. 워드프레스 게시판 플러그인 KBoard의 대량관리 기능에 CSV를 올리다 한글이 깨진 사람이 코스모스팜 포럼에 남긴 질문이 바로 이 경우다.
혹시 엑셀 UTF-8 인코딩을 ANSI로 변경하여 그런것인가요?
KBoard 게시판 대량관리 CSV 업로드 한글깨짐 질문, 조회 5,093
답변은 짧았다. "반드시 UTF-8 인코딩으로 된 파일을 업로드해주셔야 합니다." 워드프레스의 기본 인코딩이 UTF-8이기 때문이다. 엑셀에서 보기 좋게 하려고 한 ANSI 변환이 업로드에서는 거꾸로 작용한 것이다.
| 용도 | 맞는 인코딩 | 확인하는 법 |
|---|---|---|
| 엑셀에서 두 번 눌러 열 파일 | BOM을 붙인 UTF-8, 또는 ANSI(CP949) | 두 번 눌러 열었을 때 한글이 보이면 된다 |
| 웹사이트·쇼핑몰·게시판에 올릴 파일 | UTF-8. BOM을 붙일지는 사이트 안내를 따른다 | 업로드 화면이나 양식 안내의 인코딩 문구를 먼저 본다 |
| 오래된 국내 시스템에 올릴 파일 | EUC-KR(CP949)을 요구하는 곳이 있다 | 안내가 없으면 담당자에게 묻는다 |
한 파일로 양쪽을 다 맞추려 하지 말고 사람이 엑셀로 볼 파일과 사이트에 올릴 파일을 따로 만든다고 생각하면 덜 헷갈린다.
그런데 ANSI로 바꿔도 안 됐다는 댓글도 있다.
저는 않되네요 ~ 노트패드에 똑같이 깨져서 나와요.
「엑셀파일에서 한글 깨짐현상 해결방법」 영상에 달린 댓글
메모장에서 열었을 때 이미 깨져 있다면 ANSI로 다시 저장해도 소용없다. 파일 속 글자가 이미 망가졌거나, 메모장이 인코딩을 잘못 짐작한 상태라서다. 그 상태로 저장하면 깨진 글자가 굳어 버린다. 이때는 그 파일을 손대지 말고 원본 엑셀 파일에서 CSV를 다시 만든다.
상황별 해결
엑셀에서 열었더니 깨진 경우
두 번 눌러 열지 말고 가져오기로 연다. 마이크로소프트 안내의 경로는 데이터 탭 → 데이터 가져오기 & 변환 그룹 → "텍스트/CSV에서"다. 파일을 고르면 뜨는 창에 "파일 원본" 목록이 있고 여기서 문자 집합을 UTF-8로 바꾸면 한글이 제대로 보인다.
마이크로소프트 문서에 따르면 이 창은 파일이 UTF-8 BOM으로 시작할 때만 UTF-8로 알아서 짐작한다. BOM이 없는 UTF-8 파일이 엑셀에서 깨져 보이는 이유가 이것이다. 그래서 파일을 BOM을 붙인 UTF-8로 다시 저장해 두면 두 번 눌러 열어도 바로 알아본다.
상대가 깨져서 받았다는 경우
받는 쪽이 무엇으로 여는지 물어야 한다. 교수님이나 거래처처럼 엑셀로 열어 볼 사람이면 BOM을 붙인 UTF-8 CSV나 엑셀 파일(xlsx) 그대로가 가장 탈이 없다. 시스템에 올리는 거라면 위 표대로 그 시스템이 원하는 인코딩을 따른다.
어느 규칙인지 모르는 파일을 받은 경우
메모장으로 열어 한글이 보이는지부터 본다. 메모장에서 보이면 파일은 멀쩡하니 엑셀에서는 가져오기로 UTF-8을 골라 연다. 메모장에서도 깨지면 가져오기 창의 "파일 원본"을 UTF-8과 한국어(EUC-KR 계열)로 바꿔 가며 미리 보기에 한글이 제대로 나오는 쪽을 고른다.
맥에서 만든 CSV를 윈도우 엑셀에서 열면 깨지는 것도 같은 원인이다. 맥은 기본이 UTF-8이고, 윈도우 엑셀은 BOM 없는 UTF-8을 잘 알아보지 못한다. 가져오기에서 UTF-8을 고르면 된다.
전화번호 앞 0이 사라질 때
한글 깨짐과 함께 자주 나오는 질문이 010으로 시작하는 전화번호다. CSV를 엑셀에서 열면 01055554444가 1055554444로 바뀐다. 엑셀이 그 칸을 숫자로 읽고 숫자 앞의 0은 뜻이 없다며 지우기 때문이다. 우편번호나 사번처럼 0으로 시작하는 번호도 똑같이 당한다.
먼저 메모장으로 CSV를 열어 본다. 메모장에서 010이 보이면 파일은 멀쩡하고 엑셀이 여는 순간 지운 것이다. 이때는 두 번 눌러 열지 말고 위의 "텍스트/CSV에서"로 가져오면서 전화번호 열을 텍스트로 지정한다. 마이크로소프트 안내도 앞에 오는 0을 유지하려면 그 열을 텍스트로 바꾸라고 하고 가져오기 마법사를 띄우는 방법으로 열기 전에 확장자를 .csv에서 .txt로 바꾸는 것을 알려 준다.
번호 앞에 작은따옴표(')를 붙이라는 방법도 많이 돈다. 엑셀 칸에 직접 입력할 때 쓰는 방법인데 그대로 따라 했다가 이렇게 된 사람이 있다.
0이 생기긴하지만 저는 따옴표도 같이 나오네요 ;;
「엑셀 숫자 앞에 [0]이 안 보일 때 방법」 영상에 달린 댓글
따옴표가 칸에 보인다면 그 따옴표는 "글자로 다뤄라"는 표시로 숨지 못하고 값의 일부로 들어간 것이다. 그 상태로 사이트에 올리면 전화번호 앞에 따옴표까지 함께 올라간다. 올릴 파일이라면 따옴표를 붙이지 말고 메모장으로 CSV를 열어 010이 제대로 들어 있는지만 확인한다. 메모장에서 0이 보이면 파일에는 0이 들어 있는 것이다. 엑셀에서 안 보인다고 파일을 다시 고치지 않는다.
소수점 뒤 0이 사라질 때
지식iN에는 CSV로 저장했더니 1.50이 1.5가 되는 식으로 소수점 뒤 0이 사라진다는 질문도 있다. 원리는 전화번호와 같다. 엑셀은 1.50과 1.5를 같은 숫자로 보고, 뒤의 0은 서식으로만 보여 준다.
이때도 메모장으로 CSV를 열어 본다. 메모장에서 1.50이 보이면 파일은 멀쩡하고, 엑셀이 다시 열면서 0을 감춘 것이다. 엑셀에서 볼 때는 그 열을 텍스트로 가져오거나, 셀 서식에서 소수 자릿수를 정해 준다. 메모장에서도 1.5라면 저장할 때 이미 빠진 것이니, 원본 엑셀에서 그 열의 표시 형식을 소수 둘째 자리로 맞춘 뒤 다시 CSV로 만든다. 단가나 규격처럼 자릿수가 뜻을 갖는 값이라면 올리기 전에 꼭 확인한다.
날짜가 45292 같은 숫자로 나올 때
엑셀 안에서 날짜는 사실 숫자다. 1900년 1월 1일을 1로 치고 하루에 1씩 늘어나는 번호에 "날짜로 보여라"는 서식이 붙어 있을 뿐이다. 45292는 2024년 1월 1일이다. 서식을 버리고 값만 꺼내는 프로그램으로 CSV를 만들면 이 번호가 그대로 찍힌다.
엑셀 화면에서 날짜가 숫자로 보인다면 그 칸을 골라 셀 서식에서 날짜를 고르면 다시 날짜로 보인다. CSV 안에 이미 45292로 적혀 버렸다면 원본 엑셀 파일에서 다시 만든다. 사이트에 올릴 파일이라면 그 사이트가 원하는 날짜 모양(2024-01-01인지 2024.01.01인지)도 함께 확인해 둔다.
설치 없이 브라우저에서 바꾸기
엑셀 없이 바꾸거나, 위의 문제를 한 번에 피하고 싶다면 이 사이트의 변환 도구를 쓸 수 있다. 브라우저 안에서 처리하므로 명단 같은 파일이 내 PC를 떠나지 않는다. 할 수 있는 것과 못 하는 것은 이렇다.

- CSV는 늘 BOM을 붙인 UTF-8로 내보낸다. 엑셀에서 두 번 눌러 열어도 한글이 깨지지 않는다.
- BOM 없는 UTF-8이나 EUC-KR(ANSI)로 내보내는 선택지는 없다. 올릴 곳이 이 둘을 따로 요구하면 메모장 같은 편집기에서 인코딩을 골라 다시 저장한다.
- 날짜 칸은 46024 같은 번호가 아니라 2026-01-02 같은 날짜로 나온다(2026년 9월 29일에 고쳤다).
- 전화번호는 엑셀 칸에 글자로 들어 있으면 010이 붙은 채 나간다. 숫자로 들어 있고 서식으로만 010-5555-4444처럼 보이게 한 칸은 1055554444로 나간다. 원본이 어느 쪽인지 모르겠으면 결과를 메모장으로 열어 본다.
- CSV를 엑셀이나 JSON으로 바꿀 때는 읽을 문자 인코딩을 고를 수 있다. 어느 규칙인지 모르는 CSV를 받았을 때 쓴다.
- 시트가 여러 개면 고른 시트마다 CSV가 하나씩 나온다.
엑셀이 있다면 엑셀의 "다른 이름으로 저장"에서 CSV로 저장해도 된다. 고르는 CSV 형식에 따라 담기는 인코딩이 달라지니, 저장한 뒤 위 표대로 용도에 맞는지 확인한다.
스마트스토어·쇼핑몰에 상품 CSV를 등록할 때
CSV 한글 깨짐을 가장 자주 겪는 곳 중 하나가 쇼핑몰 상품 일괄 등록, 문자 발송 사이트의 주소록 등록, 회원 명단 가져오기다. 엑셀로 정리한 상품명과 옵션을 CSV로 저장해 올렸더니 사이트 화면에서 상품명이 깨져 있다는 경우가 많다.
- 먼저 그 사이트의 일괄 등록 안내나 양식 파일을 내려받아 본다. 인코딩, 구분자, 날짜 모양을 안내문에 적어 둔 곳이 많다. 양식 파일이 엑셀(xlsx)이라면 CSV로 바꾸지 말고 그대로 채워 올리는 편이 탈이 없다.
- 안내에 인코딩이 없다면 UTF-8로 먼저 올려 보고, 한글이 깨지면 EUC-KR(ANSI)로 바꿔 다시 올린다. 몇 줄만 남긴 시험 파일로 해 보면 실수가 적다.
- 상품 코드, 바코드, 휴대폰 번호처럼 0으로 시작하는 값은 메모장에서 0이 남아 있는지 확인한다. 엑셀에서 열어 저장하는 순간 0이 빠질 수 있다.
- 가격과 수량 칸에 쉼표(1,000)가 찍혀 있으면 칸이 밀릴 수 있다. 숫자 칸은 쉼표 없이 두는 편이 안전하다.
- 옵션이나 상세 설명에 줄바꿈이 있으면 행이 쪼개진다. 올리기 전에 줄바꿈을 없앤다.
사이트마다 요구하는 형식이 다르고 바뀌기도 하므로, 여기 적은 것은 순서일 뿐이다. 그 사이트 안내문이 늘 우선이다.
PDF로 받은 표를 엑셀로 옮겨 CSV를 만들어야 한다면 PDF 표 옮기기 글을 먼저 보면 된다.
깨진 파일은 되살릴 수 있나
보기만 깨진 것이라면 살아난다. 올바른 규칙으로 다시 열면 그대로 나온다. 하지만 깨진 상태로 저장해 버렸다면 대개 되돌릴 수 없다. 읽지 못한 글자가 물음표나 엉뚱한 글자로 바뀌어 버렸기 때문이다.
깨진 파일을 발견하면 그 상태로 저장하지 말고 원본부터 찾는다. 저장하는 순간 되살릴 수 없게 되는 경우가 많다.
쉼표와 줄바꿈도 문제를 일으킨다
인코딩 다음으로 흔한 사고다. 주소에 쉼표가 들어 있으면 칸이 밀리고 메모에 줄바꿈이 있으면 행이 쪼개진다.
- 쉼표가 들어간 값은 큰따옴표로 감싸야 한다. 제대로 만들어진 도구는 알아서 감싼다.
- 값 안의 줄바꿈은 CSV에서 다루기 까다롭다. 올릴 파일이라면 미리 없애는 편이 낫다.
- 이런 문제가 잦다면 CSV 대신 엑셀 파일 그대로 주고받는 것을 고려한다.
자주 묻는 것
- 상대방에게도 깨져 보이나요?
- 상대가 윈도우 엑셀에서 두 번 눌러 연다면 나와 똑같이 깨질 가능성이 크다. BOM을 붙인 UTF-8로 다시 만들어 보내거나 xlsx 그대로 보내면 걱정할 일이 없다.
- csv 한글 깨짐 메모장으로 고칠 수 있나요?
- 메모장에서 한글이 제대로 보인다면 고칠 수 있습니다. 엑셀에서 두 번 눌러 열 파일이면 메모장에서 다른 이름으로 저장할 때 인코딩을 ANSI나 BOM이 붙은 UTF-8로 고르면 됩니다. 사이트에 올릴 파일이면 그 사이트가 원하는 인코딩으로 저장합니다. 메모장에서도 이미 깨져 보인다면 그 파일을 저장하지 말고 원본 엑셀에서 다시 만듭니다.
- 소수점 뒤 0이 사라져요
- 메모장으로 CSV를 열어 1.50처럼 0이 있는지 봅니다. 있으면 엑셀이 열 때 감춘 것이니 그 열을 텍스트로 가져오거나 소수 자릿수 서식을 정합니다. 메모장에서도 없다면 원본 엑셀에서 표시 형식을 맞춘 뒤 다시 저장합니다.
- UTF-8 CSV와 그냥 CSV 차이는?
- 엑셀의 저장 형식 목록에 CSV가 여러 개 있는데, UTF-8이라고 적힌 쪽은 한글을 UTF-8로 담고 맨 앞에 BOM 표시를 붙입니다. 그냥 CSV는 한국어 윈도우에서 대개 ANSI(CP949)로 저장됩니다. 받는 쪽이 윈도우 엑셀이면 둘 다 열리지만, 웹 서비스는 UTF-8을 기대하는 곳이 많고 오래된 국내 시스템은 ANSI를 요구하기도 합니다. 올릴 곳의 안내가 있으면 그것이 우선입니다.
- 전화번호 앞 0을 살리려고 작은따옴표를 붙였더니 따옴표까지 보여요.
- 따옴표가 값에 섞인 것이다. 따옴표를 지우고 CSV는 메모장에서 010이 있는지로 확인한다. 엑셀에서 볼 때는 가져오기에서 그 열을 텍스트로 지정한다.
- 날짜가 숫자로 바뀌었어요.
- 엑셀의 날짜 일련번호다(45292는 2024-01-01). 엑셀에서는 셀 서식을 날짜로 바꾸면 돌아오고 CSV에 숫자로 적혀 버렸다면 원본에서 다시 만든다.
최종 수정 2026년 10월 14일 · 2026년 10월 14일 기준.