엑셀 CSV 한글 깨짐 원인과 UTF-8 변환법

엑셀에서 만든 표를 CSV로 저장한 뒤 다른 프로그램에서 열어보면 한글이 물음표(?)나 알 수 없는 기호로 나오는 경우가 있습니다. 파일이 손상된 것이 아니라 저장할 때 쓴 문자 인코딩과 읽을 때 기대하는 인코딩이 다르기 때문입니다. 이 글은 왜 이 문제가 생기는지와, 어디서 열어도 한글이 깨지지 않는 CSV로 변환하는 방법을 정리합니다.

요약 ① 윈도우 엑셀의 기본 「CSV(쉼표로 분리)」 저장은 유니코드가 아니라 한국어 윈도우 전용 코드페이지(CP949)를 사용합니다 ② 웹 시스템이나 다른 운영체제 대부분은 UTF-8을 기본으로 기대하기 때문에 CP949로 저장된 한글이 깨져 보입니다 ③ 저장할 때 「CSV UTF-8(쉼표로 분리)」을 선택하거나 BOM 포함 UTF-8로 다시 저장하면 어디서 열어도 한글이 정상적으로 보입니다

엑셀 CSV가 다른 프로그램에서 한글이 깨지는 이유

회원 명단이나 상품 목록을 엑셀에서 CSV로 저장한 뒤 쇼핑몰 관리자 페이지나 데이터베이스 가져오기 기능에 업로드하면, 이름이나 주소가 들어간 칸이 물음표나 알 수 없는 기호로 표시되는 경우가 있습니다. 숫자나 영문만 있는 열은 멀쩡한데 한글이 들어간 열만 이렇게 깨진다면 파일 손상이 아니라 인코딩 문제입니다.

윈도우 엑셀에서 파일 형식을 그냥 「CSV(쉼표로 분리)」로 저장하면, 실제로는 시스템 로캘의 ANSI 코드페이지로 저장됩니다. 한국어 윈도우에서 이 코드페이지는 CP949(구 EUC-KR을 확장한 표준)이며, 한글 한 글자를 정해진 2바이트 값으로 매핑합니다. 반면 웹 서버, 데이터베이스, 리눅스나 맥의 프로그램은 전 세계 문자를 하나의 체계로 표현하는 UTF-8을 기본값으로 기대하는데, 같은 글자라도 CP949가 쓰는 바이트 값과 UTF-8이 쓰는 바이트 값은 서로 다릅니다.

UTF-8을 기대하는 프로그램이 CP949 바이트를 만나면 정의되지 않은 바이트 조합으로 해석해서 물음표나 깨진 기호로 대체합니다. 반대 방향도 마찬가지입니다. UTF-8로 저장한 CSV 파일을 윈도우 엑셀에서 더블클릭으로 곧바로 열면, 파일 앞에 BOM 표식이 없는 한 엑셀이 이를 시스템 기본 인코딩(CP949)으로 오인해서 이번에는 엑셀 쪽에서 한글이 깨져 보입니다.

한글 깨짐 없이 엑셀을 CSV로 변환하는 방법

엑셀에서 파일 > 다른 이름으로 저장을 실행한 뒤, 파일 형식 목록에서 그냥 「CSV(쉼표로 분리)」가 아니라 「CSV UTF-8(쉼표로 분리)」를 선택합니다. 이 옵션은 엑셀 2016 이후 버전에 포함되어 있고, 텍스트를 UTF-8로 인코딩하면서 파일 맨 앞에 BOM(Byte Order Mark)이라는 표식을 함께 기록합니다. 이 BOM 덕분에 나중에 같은 파일을 엑셀에서 다시 열어도 UTF-8임을 자동으로 인식해서 한글이 깨지지 않습니다.

이미 그냥 CSV로 저장해서 한글이 깨진 상태라면, 메모장으로 그 파일을 열어 다른 이름으로 저장 대화상자를 띄운 뒤 하단의 인코딩 항목을 UTF-8로 바꿔 다시 저장하면 됩니다. 단, 메모장에서 열었을 때 이미 물음표나 깨진 기호로 보인다면 원본 문자 정보가 사라진 것이므로 복구할 수 없고, 반드시 엑셀 원본 파일에서 다시 저장해야 합니다.

저희 도구로 확인하기. 엑셀 파일을 업로드하고 인코딩(UTF-8 등)과 구분자를 선택하면, 한글이 깨지지 않는 CSV 파일을 바로 만들어 다운로드할 수 있습니다.

엑셀(XLSX) → CSV 변환

무료 · 가입 불필요 · 엑셀 파일을 그대로 업로드해 UTF-8 CSV로 바로 변환

자주 막히는 지점

상황왜 그런지
엑셀에서 그냥 「CSV(쉼표로 분리)」로 저장했다시스템 로캘 코드페이지(한국어 윈도우는 CP949)로 저장되어 UTF-8을 기대하는 프로그램에서 깨집니다
UTF-8로 저장한 CSV를 엑셀에서 더블클릭으로 열었더니 깨진다BOM이 없으면 엑셀이 시스템 기본 인코딩으로 오인해서 읽습니다
값 안에 쉼표나 줄바꿈이 들어 있는 셀이 있다구분자와 값을 구별하지 못해 열이 밀려 보이며, 해당 값을 큰따옴표로 감싸야 합니다
우편번호나 사업자번호 앞자리 0이 사라진다인코딩과 무관하게 엑셀이 숫자 서식으로 자동 인식해서 생기는 별개의 문제입니다

정리

엑셀의 기본 CSV 저장은 한국어 윈도우 코드페이지(CP949)를 쓰지만, 대부분의 외부 시스템은 UTF-8을 기대합니다. 이 차이가 한글이 물음표나 깨진 기호로 보이는 근본 원인입니다. 저장할 때 「CSV UTF-8(쉼표로 분리)」을 선택하면 BOM이 포함된 UTF-8로 저장되어 대부분의 경우 문제가 해결됩니다. 이미 깨진 파일은 복구가 아니라 원본 엑셀 파일에서 인코딩을 다시 지정해 새로 변환해야 합니다.

엑셀(XLSX) → CSV 변환

무료 · 가입 불필요 · 엑셀 파일을 그대로 업로드해 UTF-8 CSV로 바로 변환

자주 묻는 질문

CSV UTF-8과 그냥 CSV는 어떻게 다른가요?

둘 다 값을 쉼표로 구분하는 형식은 같지만 문자를 바이트로 바꾸는 방식(인코딩)이 다릅니다. 그냥 CSV는 시스템 로캘 인코딩(한국어 윈도우는 CP949)을 쓰고, CSV UTF-8은 국제 표준인 UTF-8을 쓰면서 파일 앞에 BOM을 붙여 엑셀도 이를 인식하게 만듭니다.

메모장에서 인코딩만 바꿔서 저장해도 되나요?

됩니다. 다만 메모장에서 열었을 때 이미 물음표나 깨진 기호로 보인다면 원본 문자 정보가 사라진 상태라 복구할 수 없습니다. 이 경우에는 반드시 엑셀 원본 파일로 돌아가 다시 저장해야 합니다.

우편번호나 사업자번호 앞자리 0이 사라지는 것도 같은 원인인가요?

아닙니다. 이건 인코딩이 아니라 엑셀이 숫자처럼 보이는 값을 자동으로 숫자 서식으로 인식해서 생기는 별개의 문제입니다. 인코딩 문제는 글자가 깨져 보이는 것이고, 이 문제는 값 자체(001이 1로)가 바뀌는 것이라 원인과 해결법이 다릅니다.

가격 보기카톡 무료 상담