CSV 한글 깨짐 복구 (UTF-8 변환)

쇼핑몰·홈택스·회계 프로그램에서 내려받은 CSV를 엑셀로 열면 한글이 ??? 나 뷁뷁으로 보이나요? 파일의 인코딩을 자동 감지해 엑셀이 바로 읽는 UTF-8(BOM)으로 바꾸거나 .xlsx로 저장합니다. 파일은 서버로 전송되지 않습니다.

브라우저에서만 처리 · 서버 전송 없음

업로드한 파일은 이 브라우저 안에서만 처리되며 어떤 서버로도 전송되지 않습니다. 페이지를 닫으면 데이터는 사라집니다.

계산 방법

이 도구는 파일의 바이트를 순서대로 검사합니다.

  1. BOM 확인 — 파일 맨 앞 3바이트가 EF BB BF면 UTF-8(BOM), FF FE/FE FF면 UTF-16입니다. BOM이 있으면 엑셀은 인코딩을 정확히 인식합니다.
  2. UTF-8 엄격 디코딩 — BOM이 없으면 UTF-8 규칙으로 한 글자씩 해석합니다. 규칙 위반이 하나도 없으면 UTF-8(BOM 없음)입니다. 이 경우가 "쇼핑몰에서 받았는데 엑셀에서 깨지는" 전형적인 파일입니다.
  3. CP949 시도 — UTF-8이 아니면 한국어 윈도우 기본 인코딩인 CP949로 해석합니다. 브라우저의 euc-kr 디코더는 확장 완성형(CP949) 8,822자를 모두 포함합니다.
  4. 변환 — 어떤 인코딩이었든 텍스트를 UTF-8로 다시 쓰고 앞에 BOM을 붙입니다. 엑셀·구글 시트·웹 업로드 모두에서 같은 글자로 보이게 됩니다.

구분자(쉼표·탭·세미콜론)는 PapaParse가 첫 행들을 보고 자동 판별합니다. 셀 값은 바꾸지 않습니다 — 숫자 형식, 날짜, 따옴표를 그대로 둡니다.

예시

상황감지 결과받을 파일
스마트스토어 주문 CSV를 엑셀로 열었더니 이름이 ?????UTF-8 (BOM 없음)UTF-8(BOM) CSV → 엑셀에서 정상
엑셀에서 저장한 CSV를 구글 시트·택배사 사이트에 올리니 뷁뷁CP949 / EUC-KRUTF-8(BOM) CSV → 양쪽 모두 정상
주문번호 202609060001234가 엑셀에서 2.02609E+14로 표시인코딩 무관.xlsx (모든 셀 문자열 저장)

흔한 실수와 주의

자주 묻는 질문

파일이 서버에 업로드되나요?

아니요. 파일은 브라우저 메모리에서만 읽고 변환합니다. 개발자 도구의 네트워크 탭을 열어 보면 업로드 요청이 전혀 없는 것을 확인할 수 있습니다. 페이지를 닫으면 데이터도 사라집니다.

왜 엑셀에서만 한글이 깨지나요?

한국어 윈도우의 엑셀은 BOM(바이트 순서 표식)이 없는 CSV를 CP949(EUC-KR)로 가정해서 엽니다. 쇼핑몰이나 웹 시스템은 대개 BOM 없는 UTF-8로 내보내기 때문에 서로 규칙이 어긋나 글자가 깨집니다. 파일 자체는 손상되지 않았습니다.

UTF-8(BOM) CSV와 .xlsx 중 무엇을 받아야 하나요?

다른 시스템(택배사·회계 프로그램)에 다시 올릴 파일이면 CSV(UTF-8 BOM)를, 사람이 엑셀로 열어 볼 파일이면 .xlsx를 권합니다. .xlsx는 모든 셀을 문자열로 저장해 주문번호가 1.23E+11로 바뀌거나 전화번호 앞자리 0이 사라지는 문제도 함께 막습니다.

반대로 UTF-8 파일을 CP949로 바꿔야 하는 경우도 있나요?

오래된 업무 프로그램이 CP949만 받는 경우가 있습니다. 그 경우 이 도구로 먼저 .xlsx로 저장한 뒤 엑셀에서 "CSV(쉼표로 분리)"로 다시 저장하면 CP949 파일이 됩니다. 별도 CP949 출력 옵션은 준비 중입니다.

큰 파일도 되나요?

50MB까지 처리합니다. 브라우저 메모리에서 동작하므로 그 이상은 파일을 나눠서 올려 주세요. 행 수 제한은 없지만 미리보기는 첫 20행만 표시합니다.

함께 쓰는 도구