엑셀 CSV 한글 깨짐 없이 UTF-8로 저장하고 확인하는 방법
CSV는 엑셀 통합 문서를 가볍게 전달할 때 편리하지만, 단순히 확장자만 .csv로 바꾼다고 안전한 교환 파일이 되지는 않습니다. 한글이 물음표나 깨진 문자로 보이고, 사번의 앞자리 0이 사라지며, 3-4가 날짜로 바뀌는 사고는 대부분 저장과 재확인을 한 단계로 생각할 때 생깁니다. 이 글은 Windows용 Excel을 중심으로 원본 보존, CSV UTF-8 저장, 다시 가져오기, 데이터 검증까지 한 흐름으로 설명합니다.
이 글은 Microsoft의 최신 공식 도움말을 2026년 8월 4일 확인해 정리했습니다. Microsoft는 CSV를 열 때 현재 기본 데이터 형식 설정으로 각 열을 해석하며, UTF-8 CSV에 BOM이 없으면 데이터 > 텍스트/CSV에서 방식이나 텍스트 가져오기 마법사를 이용하라고 안내합니다. 메뉴 이름은 Excel 버전과 운영체제에 따라 조금 다를 수 있으므로 조직에서 쓰는 버전으로 시험한 뒤 표준 절차를 확정하세요.
핵심 개념: CSV와 XLSX는 보존하는 정보가 다르다
XLSX는 여러 시트, 수식, 셀 서식, 차트, 이미지, 메모 같은 통합 문서 구조를 보존합니다. 반면 CSV는 한 행을 한 줄로, 각 열을 구분자로 나눈 일반 텍스트입니다. Microsoft 공식 문서도 텍스트 형식으로 저장하면 서식이 제거되고 활성 시트만 저장된다고 경고합니다. 따라서 CSV는 원본 문서가 아니라 다른 시스템에 값을 전달하기 위한 교환본으로 다뤄야 합니다.
UTF-8은 한글을 포함한 여러 언어 문자를 공통 방식으로 표현하는 문자 인코딩입니다. 하지만 파일이 UTF-8이어도 받는 프로그램이 다른 인코딩으로 추정하면 화면에서 깨질 수 있습니다. 또한 인코딩은 글자 표현 문제만 해결합니다. 날짜 자동 변환, 앞자리 0 손실, 큰 숫자의 지수 표기, 쉼표가 든 셀의 따옴표 처리 같은 데이터 형식 문제는 별도로 검수해야 합니다.
| 구분 | XLSX 통합 문서 | CSV UTF-8 교환본 | 실무 판단 |
|---|---|---|---|
| 문자 | 유니코드 문자와 셀 구조 보존 | UTF-8로 문자 저장 | 한글 전달에는 UTF-8 선택 |
| 시트 | 여러 시트 보존 | 활성 시트 하나만 저장 | 시트별 CSV가 필요하면 각각 내보내기 |
| 수식 | 수식과 계산 결과 보존 | 화면에 표시된 값 위주로 저장 | 원본 XLSX를 반드시 별도 보관 |
| 서식·차트 | 대부분 보존 | 제거됨 | 보고서 보관용으로 CSV만 남기지 않기 |
| 데이터 형식 | 셀의 날짜·텍스트 형식 보존 | 여는 프로그램이 다시 추정 | 코드·날짜·긴 숫자는 재가져오기 검수 |
준비사항: 내보내기 전에 원본과 규격을 고정한다
먼저 원본 XLSX를 복사해 보관하고 작업용 사본을 만듭니다. CSV 저장 후 같은 이름의 XLSX를 덮어쓰면 수식이나 여러 시트를 복구하기 어렵습니다. 파일 이름은 고객목록_20260804_v01.xlsx처럼 기준일과 버전을 넣고, 교환본은 고객목록_20260804_utf8.csv처럼 용도를 구분하면 전달 오류가 줄어듭니다.
받는 시스템의 규격도 먼저 확인합니다. 필수 열 이름, 열 순서, 구분자, 날짜 표기, 소수점 기호, 빈 값 표현, 줄바꿈 허용 여부, 최대 행 수를 기록합니다. CSV라는 이름만 같아도 어떤 시스템은 쉼표를, 어떤 시스템은 세미콜론을 기대합니다. Windows 지역 설정을 바꾸면 다른 프로그램의 구분자에도 영향을 줄 수 있으므로, 전역 설정 변경은 마지막 수단으로 두고 가져오기 화면의 구분자 선택이나 시스템 전용 내보내기 기능을 우선합니다.
| 점검 항목 | 권장 예시 | 확인 이유 |
|---|---|---|
| 문자 인코딩 | UTF-8 | 한글과 다국어 문자 손실 방지 |
| 구분자 | 쉼표 , | 대상 시스템과 열 분리 규칙 일치 |
| 날짜 | 2026-08-04 | 국가별 날짜 해석 차이 감소 |
| 식별 코드 | 텍스트, 예: 001274 | 앞자리 0 보존 |
| 빈 값 | 빈 문자열 또는 규격 지정값 | 0, NULL, 공백의 의미 혼동 방지 |
| 줄바꿈 | 허용 여부 사전 확인 | 한 레코드가 여러 줄처럼 보이는 문제 예방 |
개인정보가 있는 파일은 반출 승인, 저장 위치, 접근 권한도 확인합니다. CSV에는 숨김 시트나 수식이 없다는 이유로 안전한 것이 아닙니다. 오히려 일반 텍스트라서 다른 도구로 쉽게 열 수 있으므로 필요한 열만 남기고 불필요한 주민번호, 계좌번호, 내부 식별자는 제거하거나 마스킹해야 합니다.
단계별 절차 1: 엑셀 데이터를 내보내기 좋게 정리한다
첫 행에는 중복되지 않는 열 이름을 둡니다. 셀 병합을 해제하고, 한 열에는 한 종류의 값만 넣습니다. 예를 들어 전화번호 열에 메모를 함께 적지 말고 전화번호와 비고를 분리합니다. 표 위의 큰 제목, 빈 행, 소계 행은 외부 시스템이 실제 데이터로 오인할 수 있으므로 내보내기 범위에서 제거합니다.
코드와 긴 숫자는 특히 주의합니다. 우편번호, 상품 코드, 사번은 계산 대상 숫자가 아니라 식별자이므로 원본에서 텍스트로 관리합니다. 카드번호처럼 15자리를 넘는 숫자를 숫자 셀에 입력하면 Excel의 정밀도 한계 때문에 저장 전에 이미 끝자리가 바뀌었을 수 있습니다. 셀 서식을 나중에 텍스트로 바꾸는 것만으로 원래 숫자가 복구되지는 않으므로 원천 데이터와 대조해야 합니다.
쉼표, 큰따옴표, 줄바꿈이 든 셀도 후보를 찾아봅니다. 정상적인 CSV 작성기는 이런 필드를 큰따옴표로 감싸고 내부 큰따옴표를 이중으로 처리하지만, 상대 시스템의 파서가 표준적인 처리를 하지 않을 수 있습니다. 설명 열에 긴 자유 문장이 많다면 표본 몇 건을 골라 끝까지 왕복 시험합니다.
단계별 절차 2: CSV UTF-8 형식으로 저장한다
데스크톱 Excel에서 대상 시트를 활성화한 뒤 파일 > 다른 이름으로 저장 또는 복사본 저장을 선택합니다. 파일 형식 목록에서 이름에 CSV UTF-8이 포함된 형식을 선택하고 새 파일명으로 저장합니다. 버전에 따라 CSV UTF-8(쉼표로 분리)(*.csv)처럼 표시될 수 있습니다.
활성 시트만 저장된다는 경고가 나오면 대상 시트가 맞는지 확인한 뒤 계속합니다. 일부 기능이나 서식이 손실된다는 경고도 CSV의 특성에 따른 것입니다. 다만 경고를 무조건 넘기지 말고 원본 XLSX가 따로 저장됐는지, 수식 결과가 최신인지, 필터로 행이 빠지지 않았는지를 다시 확인해야 합니다. 저장이 끝나도 원본 통합 문서를 CSV 상태로 계속 편집하지 말고 닫은 뒤 XLSX 원본과 CSV 결과본을 분리해 둡니다.
파일 형식 목록에 CSV UTF-8이 보이지 않는 오래된 환경이라면 조직의 지원 버전을 확인합니다. 임의의 온라인 변환 사이트에 개인정보 파일을 올리지 마세요. 최신 Excel에서 다시 저장하거나 승인된 텍스트 편집기에서 UTF-8로 변환한 뒤, 다음 절차처럼 Excel의 가져오기 기능으로 검증하는 편이 안전합니다.
단계별 절차 3: 더블클릭 대신 텍스트/CSV 가져오기로 확인한다
저장된 CSV를 더블클릭하면 Excel이 현재 지역·데이터 형식 설정을 사용해 열을 자동 해석합니다. 이 방식은 한글이 보이더라도 코드나 날짜가 조용히 바뀔 수 있습니다. 검수용 새 통합 문서를 열고 데이터 > 데이터 가져오기 > 파일에서 > 텍스트/CSV에서를 선택한 뒤 저장한 CSV를 지정합니다. 일부 버전에서는 데이터 > 텍스트/CSV에서로 바로 표시됩니다.
미리 보기 창에서 파일 원본 또는 인코딩이 UTF-8로 인식되는지, 구분자가 쉼표인지, 열이 의도대로 나뉘는지 확인합니다. 한글이 깨지면 UTF-8 계열을 명시적으로 선택합니다. 001274 같은 코드가 숫자로 바뀔 우려가 있으면 바로 로드하지 말고 데이터 변환을 선택해 Power Query에서 해당 열의 데이터 형식을 텍스트로 지정합니다. 날짜도 업무 규격과 로캘을 확인한 뒤 명시적으로 변환합니다.
Microsoft는 BOM이 있는 UTF-8 CSV는 일반적으로 정상적으로 열 수 있고, BOM이 없는 경우 Power Query의 텍스트/CSV 가져오기나 텍스트 가져오기 마법사를 사용할 수 있다고 설명합니다. 레거시 마법사는 호환 목적으로 계속 지원되지만 최신 작업에서는 Power Query 경로가 열별 형식을 검토하기 편리합니다.
구체적인 사례: 고객 업로드 파일을 왕복 검증한다
고객 업로드 파일에 고객번호, 이름, 가입일, 메모 네 열이 있다고 가정해 보겠습니다. 표본 행은 001274, 김하늘, 2026-08-04, 서울, 강남 지점 문의입니다. 메모에는 쉼표가 있으므로 CSV 원문에서는 보통 큰따옴표로 감싸집니다. 고객번호는 텍스트로 유지되어야 하고 날짜는 YYYY-MM-DD 규격이어야 합니다.
저장 후 새 통합 문서로 가져오면서 고객번호 열을 텍스트로 지정합니다. 로드한 결과에서 고객번호 길이가 6인지, 이름이 정확한지, 가입일이 하루 전후로 밀리지 않았는지, 메모가 두 열로 갈라지지 않았는지를 확인합니다. 전체 행 수도 원본과 비교합니다. 빈 행을 제외한 원본 데이터가 9,850건이면 결과도 9,850건이어야 합니다.
마지막으로 실제 대상 시스템의 테스트 영역에 소량을 업로드하고 내보내기를 다시 받아 원본과 비교합니다. Excel 안에서만 잘 보이는 것은 충분한 검증이 아닙니다. 생성 프로그램, 전송 구간, 수신 프로그램을 모두 거치는 왕복 시험이 가장 확실합니다.
자주 발생하는 문제와 해결표
| 증상 | 가능성이 큰 원인 | 해결 방법 | 재발 방지 |
|---|---|---|---|
| 한글이 `ìë |
`처럼 깨짐 | UTF-8을 다른 문자셋으로 해석 | 텍스트/CSV 가져오기에서 UTF-8 선택 | 저장 형식과 가져오기 인코딩을 절차서에 명시 |
| 한글이 물음표로 바뀜 | UTF-8이 아닌 형식으로 저장하며 문자 손실 | 원본 XLSX에서 CSV UTF-8로 다시 저장 | 변환 전후 한글 표본 대조 |
| 001274가 1274가 됨 | 자동 숫자 변환 | 가져오기에서 해당 열을 텍스트로 지정 | 식별자 열 데이터 사전 작성 |
| 3-4가 날짜로 바뀜 | 지역 설정에 따른 자동 날짜 해석 | Power Query에서 텍스트 형식 지정 | 모호한 값과 날짜 규격 분리 |
| 한 행이 여러 열로 갈라짐 | 구분자 불일치 또는 따옴표 처리 문제 | 미리 보기에서 구분자 선택, 원문 따옴표 확인 | 자유 문장 필드 표본 테스트 |
| 여러 시트가 사라짐 | CSV는 활성 시트 하나만 저장 | 원본 XLSX 복구, 시트별 CSV 생성 | CSV를 원본 보관 형식으로 사용하지 않기 |
| 수식·서식·차트가 사라짐 | 텍스트 형식의 구조적 한계 | XLSX 원본에서 복구 | 결과본과 원본을 별도 폴더에 보관 |
| 날짜나 소수점이 다르게 보임 | 수신 측 로캘과 형식 추정 차이 | ISO 날짜와 명시적 열 형식 사용 | 대상 시스템 규격서에 형식 고정 |
실무 팁: 값뿐 아니라 구조와 건수도 검수한다
검수표에는 눈으로 보는 한글뿐 아니라 행 수, 열 수, 열 이름, 중복 키, 필수값 누락, 최솟값과 최댓값을 포함합니다. 가능하면 원본과 결과본에서 고객번호 같은 고유 키의 개수를 비교합니다. 합계가 의미 있는 데이터라면 금액 합계도 비교하되, 합계가 같다고 모든 행이 같은 것은 아니므로 건수와 키 검사를 함께 사용합니다.
파일 자체의 인코딩을 확인할 때는 조직에서 승인한 텍스트 편집기나 개발 도구의 인코딩 표시를 사용할 수 있습니다. 다만 UTF-8 표시 하나만 보고 끝내지 말고 실제 수신 프로그램으로 가져와야 합니다. BOM 유무를 다르게 처리하는 시스템도 있으므로 상대 시스템이 요구하는 사양을 우선합니다.
반복 업무라면 원본 수신 → 사본 생성 → 열 규격 검사 → CSV UTF-8 저장 → 새 통합 문서로 재가져오기 → 표본·건수 비교 → 테스트 업로드 → 승인 순서를 체크리스트로 만듭니다. 담당자 이름과 검수 시각, 원본 파일 해시 또는 버전도 남기면 문제 발생 시 어떤 파일이 전달됐는지 추적하기 쉽습니다.
한계와 주의사항
CSV에는 인코딩이나 열 데이터 형식을 강제하는 완전한 메타데이터가 없습니다. 같은 파일도 프로그램과 지역 설정에 따라 다르게 보일 수 있습니다. 앞자리 0과 긴 숫자가 중요한 데이터라면 CSV 외에 열 정의서와 표본을 함께 전달하거나, 형식을 명시할 수 있는 다른 교환 방식을 검토하세요.
CSV 파일을 수식 주입 공격 관점에서도 점검해야 합니다. 외부 입력이 =, +, -, @로 시작하면 스프레드시트가 수식으로 해석할 가능성이 있습니다. 신뢰할 수 없는 자유 입력을 그대로 CSV로 배포하거나 다시 열 때는 조직의 보안 지침에 따라 무해화하고, 임의로 매크로나 외부 링크를 허용하지 않습니다.
Microsoft 365의 기능과 메뉴는 업데이트될 수 있고, Windows와 Mac용 Excel의 가져오기 경로도 다를 수 있습니다. 이 글의 화면 경로를 절대 규칙으로 삼기보다 공식 도움말의 적용 대상 버전과 실제 조직 환경을 함께 확인하세요.
최종 체크리스트
- 원본 XLSX를 수정되지 않은 상태로 별도 보관했다.
- 내보낼 활성 시트와 대상 범위를 확인했다.
- 필수 열 이름, 순서, 구분자, 날짜와 빈 값 규격을 확인했다.
- 사번·우편번호·상품 코드·긴 숫자를 텍스트로 관리했다.
- 파일 형식에서 CSV UTF-8을 명시적으로 선택했다.
- 새 통합 문서의 텍스트/CSV 가져오기로 결과를 다시 열었다.
- 가져오기 화면에서 UTF-8, 쉼표 구분자, 열별 데이터 형식을 확인했다.
- 한글, 앞자리 0, 날짜, 긴 숫자, 쉼표·줄바꿈 포함 셀을 표본 검사했다.
- 원본과 결과본의 행 수, 열 수, 고유 키 개수와 주요 합계를 비교했다.
- 실제 수신 시스템의 테스트 영역에서 왕복 검증했다.
- 개인정보와 수식 주입 가능성을 확인하고 승인된 위치에 저장했다.
- 실제 전달본의 파일명, 버전, 검수자와 검수 시각을 기록했다.
공식 참고 자료
- Microsoft Support, Import or export text (.txt or .csv) files: https://support.microsoft.com/en-us/excel/get-started/import-or-export-text-txt-or-csv-files
- Microsoft Support, Opening CSV UTF-8 files correctly in Excel: https://support.microsoft.com/en-US/Excel/opening-csv-utf-8-files-correctly-in-excel
- Microsoft Support, Save a workbook to text format (.txt or .csv): https://support.microsoft.com/en-us/excel/save-a-workbook-to-text-format-txt-or-csv
- Microsoft Support, Text Import Wizard: https://support.microsoft.com/en-us/excel/text-import-wizard
위 자료 확인일: 2026년 8월 4일.
