CSV 파일이 엑셀에서 깨지는 이유와 해결법: UTF-8 BOM, 구분 기호, 앞자리 0 보존
목차
1. 직접 진단: 파일 형식과 엑셀 자동 변환의 차이
CSV(쉼표로 구분된 값) 파일은 서식이 없는 순수 텍스트 스트림입니다. 엑셀에서 열었을 때 글자가 깨지거나 모든 데이터가 A열에 몰리거나 긴 숫자의 뒷자리가 0으로 바뀌는 경우, 파일 자체가 손상된 경우는 거의 없습니다. 원인은 CSV를 더블클릭할 때 엑셀이 적용하는 기본 자동 추측 로직에 있습니다.
더블클릭은 엑셀이 파일의 인코딩을 묻지 않고 윈도우 운영체제의 지역 설정에 맞춰 열도록 강제합니다. 이를 방지하려면 다음 4가지 기술적 원리를 숙지해야 합니다.
2. 글자 깨짐(모지바케) 함정: UTF-8 vs. UTF-8 BOM
최신 웹 애플리케이션과 데이터베이스는 기본적으로 BOM(바이트 순서 표시)이 없는 UTF-8로 텍스트를 출력합니다. 하지만 한국어 윈도우의 엑셀은 더블클릭 시 로컬 레거시 코드페이지(CP949)를 기본값으로 사용합니다.

파일 시작 부분에 3바이트 식별자(BOM: 0xEF, 0xBB, 0xBF)가 없으면, 엑셀은 멀티바이트 UTF-8 문자를 분리된 단일 바이트로 해석하여 한글이 완전히 깨지게 됩니다.
| 원래 문자열 | BOM 없을 때 엑셀 표시(깨짐) | 발생 원인 |
|---|---|---|
München / İstanbul |
München / İstanbul |
UTF-8 2-byte → ANSI Mojibake |
Français / Español |
Français / Español |
Diacritics parsed as individual code points |
€ 1,500 / ₺ 5,000 / ¥ 10,000 |
€ 1,500 / ₺ 5,000 / ¥ 10,000 |
Multi-byte currency symbols decoded into ANSI artifacts |
엑셀 사용자를 위한 CSV를 작성할 때는 반드시 UTF-8 BOM을 삽입하십시오. GoToolstack의 JSON ↔ CSV 변환기에서 엑셀용 UTF-8 BOM (\uFEFF) 추가를 체크하면 해결됩니다.
3. 쉼표와 세미콜론 지역 충돌 (A열 몰림 현상)
한국과 미국에서는 소수점에 마침표(12.50)를, 목록 구분 기호에 쉼표를 사용합니다. 그러나 유럽 여러 국가에서는 쉼표가 법적 소수점(12,50)입니다.
소수점과 열 구분 기호가 동일할 수 없으므로, 해당 지역의 윈도우 시스템은 세미콜론(;)을 기본 목록 구분 기호로 설정합니다. 표준 쉼표 CSV를 열면 세미콜론이 발견되지 않아 모든 데이터가 A열에 들어갑니다.
구분 기호를 변경하여 내보내거나, 엑셀의 데이터 > 텍스트/CSV에서 기능을 사용하여 쉼표를 직접 지정하십시오.
4. 따옴표와 줄바꿈 필드 처리 (RFC 4180 표준)
셀 값 안에 쉼표나 줄바꿈이 포함된 경우, RFC 4180 표준에 따라 전체 필드를 큰따옴표로 감싸야 합니다. 텍스트 내부의 따옴표는 두 번 연속("") 입력하여 이스케이프합니다.
ID,Customer,Address,Notes
101,"Acme, Inc.","123 Industrial Way
Suite 400","Order confirmed with ""Express"" shipping"5. 앞자리 0 누락과 15자리 수치 절삭 한계
엑셀은 서식이 없는 CSV를 읽을 때 데이터 유형을 숫자로 자동 변환합니다. 이로 인해 두 가지 치명적인 데이터 왜곡이 발생합니다.
앞자리 0 영구 삭제: 우편번호나 사업자등록번호(예: "01234")가 정수(1234)로 변환되어 앞의 0이 메모리에서 완전히 사라집니다.
15자리 유효숫자 절삭 한계 (엑셀 엔진 vs. IEEE 754): 엑셀의 스프레드시트 엔진은 계산 규칙상 유효숫자를 최대 15자리로 제한합니다. 일반 IEEE 754 배정밀도 부동소수점 표준은 정수를 253(9,007,199,254,740,992, 약 16자리)까지 정확하게 유지하지만, 엑셀은 16자리 이후의 모든 숫자를 0으로 강제 반올림합니다(1234567890123456 → 1234567890123450).
중요 경고: 파일을 연 후에 셀 서식을 '텍스트'로 변경해도 잘려나간 숫자는 복구되지 않습니다. 숫자로 읽혀진 시점에 이미 메모리에서 원본이 파괴되었습니다.
6. 마이크로소프트 엑셀 공식 권장 가져오기 절차 (Power Query)
데이터 손실 없이 CSV를 안전하게 열려면 Power Query 마법사를 사용해야 합니다.
- 엑셀을 빈 통합 문서로 엽니다(CSV 파일을 더블클릭하지 마십시오).
- 상단 리본 메뉴에서 데이터 > 데이터 가져오기 > 파일에서 > 텍스트/CSV에서를 선택합니다.
- 미리보기 창에서 파일 원본:을
65001: Unicode (UTF-8)로 설정합니다. - 구분 기호:를 쉼표 또는 세미콜론으로 지정합니다.
- 로드 대신 데이터 변환을 클릭하고, Power Query 편집기에서 고유번호나 전화번호 열의 데이터 형식을 텍스트로 변경합니다.
- 닫기 및 로드를 클릭하여 데이터가 보존된 상태로 시트에 반영합니다.
- 원시 CSV 파일을 덮어써서 손상시키지 않도록 통합 문서를 Excel 통합 문서(
.xlsx) 형식으로 저장하여 original 원본 데이터를 보존하세요.
7. GoToolstack의 브라우저 안전 데이터 도구
엑셀의 기본 오류를 피하고 서버 업로드 없이 브라우저 메모리에서 안전하게 처리하세요:
- JSON ↔ CSV 변환기: UTF-8 BOM 삽입, 쉼표/세미콜론 선택 및 CRLF 줄바꿈 설정.
- Excel ↔ CSV/JSON 변환기: SheetJS 엔진 기반 브라우저 로컬 안전 변환.
- 개발자 도구 허브: 데이터 서식 지정 및 검증 도구 모음.
기술 참고 자료 및 공식 표준 규격
- IETF RFC 4180: 쉼표로 구분된 값(CSV) 파일의 공통 형식 및 MIME 유형 규격 (따옴표 이스케이프, CRLF 및 구분 기호 규칙).
- Microsoft Learn / Support: Microsoft Excel에서 텍스트(.txt 또는 .csv) 파일 가져오기 또는 내보내기 공식 가이드 (Power Query 데이터 유형 보존).
- Unicode Consortium: FAQ – UTF-8, UTF-16, UTF-32 및 바이트 순서 표시(BOM) 기술 지침.