도구 · 문제 해결

Excel에서 CSV 한글이 깨질 때: UTF-8 BOM과 가져오기 설정

먼저 알아둘 내용

UTF-8 CSV의 한글이 Excel에서만 깨진다면 BOM을 포함한 파일로 다시 받거나 데이터 가져오기에서 인코딩을 확인하세요. 열이나 행이 어긋나는 문제는 구분자와 따옴표 처리를 따로 확인해야 합니다.

적용 범위Tooliv의 쉼표·세미콜론·탭 구분 데이터와 객체 배열 JSON 변환을 기준으로 설명합니다. Excel의 메뉴 이름은 버전과 운영체제에 따라 다를 수 있으며, 이미 손상된 원본 문자열을 복원하는 기능은 아닙니다.

바로 적용하기

이 글의 목차 4

먼저 한글 문제인지, 표 구조 문제인지 구분하세요

파일을 다시 저장하기 전에 원본 JSON이나 텍스트 편집기에서 한글이 정상인지 확인하세요. 원본은 정상인데 Excel에서만 이상하게 보이면 인코딩 해석을 먼저 점검합니다. 원본부터 ?나 깨진 문자로 바뀌었다면 BOM을 추가해도 사라진 글자를 되찾을 수 없습니다. 정상 원본을 다시 내보내야 합니다.

보이는 증상먼저 확인할 항목다음 동작
한글만 알아볼 수 없는 문자로 표시됨UTF-8 인코딩 인식BOM 파일 다운로드 또는 데이터 가져오기
모든 내용이 한 열에 들어감가져오기 구분자파일에 쓰인 쉼표·세미콜론·탭을 지정
주소 뒤에서 열이 하나 더 생김값 안의 쉼표와 따옴표해당 값을 큰따옴표로 감쌌는지 확인
메모가 여러 행으로 나뉨셀 안의 줄바꿈줄바꿈이 있는 필드 전체의 따옴표 확인
0012가 12로 바뀜스프레드시트의 숫자 해석가져올 열의 형식을 텍스트로 지정

한글 깨짐은 두 가지 경로로 해결합니다

Tooliv에서 JSON을 CSV로 변환한 뒤 다운로드를 누르면 UTF-8 BOM을 포함한 CSV 파일을 받을 수 있습니다. 결과를 복사해 다른 프로그램에서 새 파일로 저장하는 경우에는 그 프로그램의 저장 인코딩이 적용되므로 다운로드와 결과가 달라질 수 있습니다.

기존 CSV를 열려면 Excel의 데이터 → 데이터 가져오기 → 파일에서 → 텍스트/CSV 경로를 사용하고, 미리보기에서 한글과 열 구분을 확인한 뒤 불러오세요. 문자 집합 선택이 보이면 UTF-8인지 확인합니다. 이 두 경로는 Microsoft의 UTF-8 CSV 안내에 근거합니다.

BOM은 파일의 문자 인코딩을 알아보는 데 쓰입니다. 고객번호를 문자열로 유지하거나 쉼표를 올바르게 처리하는 역할까지 하지는 않습니다. 고객번호·우편번호처럼 앞자리 0이 의미 있는 열은 가져오기 단계에서 텍스트로 취급해야 합니다.

UTF-8로 저장한 .json, .csv, .tsv 파일은 최대 5 MB까지 직접 열거나 끌어다 놓을 수 있습니다. TSV를 열면 탭이 선택됩니다. 다른 파일은 실제 구분자를 직접 선택하세요. 표 미리보기는 처음 10행·12열만 표시하고, 다운로드는 전체 결과를 담습니다.

쉼표와 따옴표가 들어간 재현용 예시

다음 내용을 CSV → JSON 입력에 넣어 보세요. id는 숫자 계산용 값이 아니라 앞자리 0을 보존해야 하는 식별자입니다.

id,name,memo
0012,김민수,"서울, 본사"
0013,이서연,"""확인"" 요청"

확인할 결과는 id가 "0012", "0013"이라는 문자열이고, 첫 메모는 서울, 본사, 두 번째 메모는 "확인" 요청이라는 점입니다. 메모 안의 쉼표를 새 열로 취급하면 안 됩니다.

CSV에서 큰따옴표 안에 들어가는 큰따옴표는 두 번 적습니다. 줄바꿈이 포함된 메모도 필드 전체를 큰따옴표로 감싸야 합니다. 이 규칙은 RFC 4180의 공통 CSV 형식에 설명되어 있습니다. 단순히 쉼표나 줄바꿈마다 문자열을 자르는 방식으로는 이런 데이터를 읽을 수 없습니다.

변환 후에도 확인해야 할 데이터

Tooliv의 JSON → CSV 변환은 객체 배열에서 나타나는 키들을 열로 모읍니다. 중첩 객체와 배열은 한 셀 안의 JSON 문자열로 저장하며 user.name 같은 별도 열로 자동 분해하지 않습니다. 필요한 값이 별도 열이어야 한다면 JSON을 먼저 평평한 객체 배열로 정리하세요.

CSV → JSON에서는 30, true, 0012처럼 보이는 값도 문자열로 유지합니다. 숫자나 불리언으로 자동 추정하면 식별자와 원문을 바꿀 수 있기 때문입니다. 반대로 JSON의 null, 빠진 키, 빈 문자열은 CSV의 빈 셀에서 구분되지 않을 수 있습니다. CSV를 거쳤다고 원래 JSON의 자료형과 구조가 그대로 복원되지는 않습니다.

외부에서 받은 값이 = 등으로 시작한다면 별도 주의가 필요합니다. 스프레드시트가 이를 수식으로 해석할 수 있고, BOM이나 일반 CSV 따옴표 처리는 수식 실행을 막는 보장이 아닙니다. OWASP의 CSV Injection 안내는 저장 후 다시 열 때 일부 방어 방식이 유지되지 않을 수 있다는 한계도 설명합니다.

마지막으로 행 수, 열 이름, 앞자리 0, 빈 셀, 중첩 데이터가 있는 행을 골라 원본과 비교하세요. 문제가 생기는 한두 행을 먼저 JSON ↔ CSV 변환기에서 확인하면 전체 파일을 반복해서 수정하는 시간을 줄일 수 있습니다.

내 조건으로 직접 확인해 보세요

읽은 내용을 필요한 도구에 적용해 보세요.

출처와 확인 기준

아래 자료와 도구의 현재 동작을 기준으로 작성했습니다. 제도·제품별 조건은 연결된 공식 안내에서 다시 확인하세요.

이미지·문서 실무 콘텐츠 더 읽기