FormatArc의 한국어 CSV to JSON 화면에 표시된 변환 결과FormatArc의 한국어 CSV to JSON 화면에 표시된 변환 결과
저자: FormatArc게시일: 2026-08-22갱신일: 2026-08-26

CSV 파일이란? 기본 구조·RFC 4180·BOM과 한글 깨짐 해결 (2026)

CSV란 무엇인가

CSV(Comma-Separated Values)는 데이터를 쉼표(,)로 구분하여 나열한 텍스트 파일 형식입니다. 스프레드시트나 데이터베이스에서 다루는 행(Row)과 열(Column)의 2차원 표 구조를 가장 단순하게 표현할 수 있는 포맷입니다.

1970년대부터 널리 사용되어 온 역사가 긴 형식이지만, CSV에는 엄격하고 단일한 강제 표준이 존재하지 않습니다. IETF의 RFC 4180은 널리 사용되는 관례를 정리한 문서이지만, 공식적인 "인터넷 표준(Standard)"이 아니라 "정보 제공용(Informational)"으로 분류되어 있습니다. 그럼에도 Microsoft Excel, Google 스프레드시트, 데이터베이스 내보내기/가져오기, 시스템 간 데이터 연동 등 거의 모든 실무 환경에서 표준처럼 쓰이고 있습니다.

손쉽게 CSV 데이터를 JSON으로 변환하고 싶다면 CSV to JSON 변환기에 붙여넣기만 하면 즉시 구조화된 결과를 얻을 수 있습니다. 회원가입이나 파일 업로드가 필요 없으며, 모든 처리는 브라우저 안에서 안전하게 끝납니다.

CSV의 기본 구조

행과 열(레코드와 필드)

CSV 파일에서는 줄바꿈 하나가 1개의 레코드(행)가 되고, 쉼표로 구분된 각 항목이 1개의 필드(열)가 됩니다.

김철수,30,서울
이영희,25,부산
박민수,35,대구

헤더 행(열 이름)

파일의 첫 번째 줄을 열 이름(헤더)으로 사용하는 것이 일반적입니다. 헤더가 있으면 각 열의 데이터가 무엇을 의미하는지 명확하게 파악할 수 있습니다.

name,age,city
김철수,30,서울
이영희,25,부산
박민수,35,대구

헤더 행은 기술적으로 필수 사항은 아니지만, 실무 데이터 교환에서는 거의 반드시 포함됩니다. 헤더가 없으면 세 번째 열이 거주 도시인지 출장지인지 데이터 자체만으로는 구별하기 어렵기 때문입니다.

큰따옴표와 이스케이프 규칙

필드 값 안에 쉼표나 줄바꿈 문자가 포함되어 있다면, 필드 전체를 큰따옴표(")로 감싸야 합니다. 큰따옴표로 감싸진 영역 안의 쉼표는 구분자가 아니라 데이터 자체로 처리됩니다.

name,comment
김철수,"취미는 독서, 달리기입니다"
이영희,"서울특별시 강남구
테헤란로 123"

필드 값 안에 큰따옴표 자체가 들어가야 하는 경우에는 큰따옴표를 연속해서 두 번("") 작성하여 이스케이프합니다.

title,note
상품A,"사이즈는 ""M""입니다"

파싱된 결과는 사이즈는 "M"입니다가 됩니다. 이 규칙을 지키지 않고 데이터를 생성하면 파서가 열 구분을 잘못 인식하거나 구문 오류를 냅니다.

구분자(Delimiter)의 종류와 TSV

이름은 "쉼표로 구분된 값(Comma-Separated Values)"이지만, 실제로는 쉼표 외의 구분자를 사용하는 텍스트 파일도 넓은 의미에서 CSV로 통칭되기도 합니다.

형식구분자주요 사용 사례확장자
CSV쉼표 ,가장 일반적. Excel, 스프레드시트, 일반 시스템 기본값.csv
TSV\t데이터 분석, 로그 데이터, 일부 DB 내보내기.tsv
세미콜론 구분세미콜론 ;소수점 표기에 쉼표를 쓰는 유럽권(독일어판 Excel 등).csv
파이프 구분파이프 |레거시 시스템 및 특수 데이터베이스 덤프.csv .txt

대부분의 CSV 파서와 라이브러리는 구분자(delimiter)를 직접 지정할 수 있습니다. 유럽 지역에서 작성된 CSV 파일을 열었을 때 모든 내용이 한 열에 뭉쳐서 나온다면 구분자가 세미콜론으로 설정되어 있는지 확인해 보세요.

CSV와 엑셀·스프레드시트의 관계

Excel에서 "다른 이름으로 저장"을 누르고 파일 형식을 CSV로 선택하면 CSV 파일이 생성됩니다. 반대로 CSV 파일을 더블 클릭하면 Excel이 실행되어 표 형태로 깔끔하게 표시됩니다.

하지만 Excel을 사용할 때는 몇 가지 주의점이 있습니다. Excel은 CSV 파일을 열 때 자체적인 자동 형식 변환(형 유추)을 수행합니다. 예를 들어 사원 번호나 우편번호 같은 007은 앞의 0이 제거되어 숫자 7로 바뀌고, 1-2 같은 문자열은 날짜 형식으로 자동 변환될 수 있습니다.

Google 스프레드시트에서도 "파일" > "다운로드" > "쉼표로 구분된 값(.csv)" 메뉴를 통해 손쉽게 CSV를 가져오고 내보낼 수 있습니다. 스프레드시트의 표를 마크다운 문서에 붙여넣고 싶다면 CSV to Markdown 변환기를 활용할 수도 있습니다. 엑셀이나 스프레드시트의 표를 그대로 마크다운 표로 변환하고 싶다면 엑셀 표 마크다운 변환을 참고하세요.

인코딩과 한글 깨짐 주의(UTF-8 BOM / CP949)

CSV 파일을 열었을 때 글자가 외계어처럼 깨져서 표시된다면 대부분 문자 인코딩 문제입니다. CSV 형식 자체에는 인코딩 정보를 저장하는 표준 헤더나 메타데이터 영역이 없기 때문에(RFC 4180 사양에도 인코딩 지정 규정은 없습니다), 파일을 읽는 프로그램이 인코딩을 추측하거나 사용자가 직접 지정해야 합니다.

한국어 환경의 CSV에서는 특히 인코딩 차이로 인한 문제가 빈번합니다.

  1. CP949 / EUC-KR: 한국어 Windows의 Excel에서 기본으로 저장되는 CSV 파일은 대부분 CP949(확장 완성형) 인코딩입니다. 이 파일을 UTF-8을 기대하는 최신 웹 애플리케이션이나 리눅스 서버에서 읽으면 한글이 깨집니다.
  2. UTF-8 (BOM 없음): 최신 개발 환경의 기본 인코딩이지만, 구형 Excel이나 기본 설정의 Windows Excel에서 열면 ANSI(CP949)로 잘못 해석하여 한글이 깨져 보입니다.
  3. UTF-8 BOM (UTF-8-SIG): 파일 맨 앞 3바이트에 BOM(Byte Order Mark, EF BB BF)을 붙인 형태입니다. Excel은 BOM이 있으면 UTF-8 파일임을 인식하고 한글을 정상적으로 표시합니다. 하지만 Google 스프레드시트, 웹 API, 일부 JSON 파서에서는 BOM을 불필요한 문자로 인식하여 첫 번째 열 이름의 맨 앞에 보이지 않는 특수 문자가 붙는 부작용이 발생할 수 있습니다.

Python의 pandas로 BOM이 포함된 CSV 파일을 읽을 때는 encoding="utf-8-sig"를 지정하면 BOM을 자동으로 제거하고 깔끔하게 읽어옵니다.

import pandas as pd

# UTF-8 BOM 파일 읽기
df = pd.read_csv("data.csv", encoding="utf-8-sig")

# CP949(윈도우 엑셀 기본값) 파일 읽기
# df = pd.read_csv("data_excel.csv", encoding="cp949")

인코딩 문제를 방지하려면 사내나 팀 내에서 UTF-8(또는 BOM 포함 여부)을 명확한 규칙으로 통일하거나, 파일을 처리하기 전에 인코딩을 명시적으로 변환하는 것이 안전합니다.

CSV의 한계

CSV는 배우기 쉽고 가볍지만, 구조적인 한계가 분명합니다.

계층 구조(중첩) 표현 불가

CSV는 평면적인 2차원 표만 표현할 수 있습니다. 데이터가 중첩된 객체나 배열 같은 계층 구조를 갖는 경우에는 적합하지 않습니다.

예를 들어 "한 명의 고객이 여러 개의 주문 목록과 배송지 주소를 갖는" 구조를 CSV로 표현하려면 행을 중복해서 쓰거나 별도의 구분자로 셀 안에 억지로 집어넣어야 하므로 관리가 복잡해집니다.

데이터 타입 부재

CSV 파일의 모든 데이터는 문자열(텍스트)입니다. 30이 숫자인지 문자열인지, true가 불리언인지 문자열인지 CSV 자체로는 판단할 수 없으며, 데이터를 읽는 애플리케이션이 이를 임의로 추론해야 합니다.

메타데이터를 담을 수 없음

CSV에는 인코딩 정보나 스키마 정의를 기록하는 방법이 없습니다. 파일을 열기 전에 인코딩이 UTF-8인지 CP949인지 알 수 있는 표준적인 방법이 없어, 읽는 쪽에서 추측하거나 별도로 지정해야 합니다(앞의 "인코딩과 한글 깨짐 주의" 절 참고).

도구마다 출력이 조금씩 다름

CSV에는 단일한 강제 표준 사양이 없습니다(앞서 설명했듯 RFC 4180은 정보 제공용(Informational) 문서입니다). 그래서 줄바꿈이나 큰따옴표 처리 방식이 도구마다 조금씩 다를 수 있으며, 파서 쪽에서 이런 차이를 흡수해야 합니다.

CSV를 JSON으로 변환해야 하는 이유

CSV의 평면적인 한계를 극복하고 현대적인 웹 시스템과 원활하게 연동하기 위해 JSON으로 변환하는 경우가 많습니다.

구조화된 데이터로 변환

CSV의 각 행을 JSON 객체로 변환하면 헤더 이름이 키(Key)가 되어 각 필드의 의미가 명확해집니다.

[
  {
    "name": "김철수",
    "age": "30",
    "city": "서울"
  },
  {
    "name": "이영희",
    "age": "25",
    "city": "부산"
  }
]

REST API 연동

최신 웹 애플리케이션과 REST API의 요청 본문(Request Body)은 대부분 JSON 형식을 요구합니다. 엑셀이나 데이터베이스에서 추출한 CSV 데이터를 JSON으로 변환하면 곧바로 API 호출 페이로드로 사용할 수 있습니다.

프로그램 처리 용이성

JavaScript를 비롯한 대부분의 프로그래밍 언어에서 JSON은 내장 함수로 손쉽게 다룰 수 있습니다. Array.map()이나 Array.filter() 같은 고차 함수로 데이터를 조작하기 훨씬 용이합니다.

CSV를 다룰 때의 주의점

직접 split(',')으로 파싱하지 않기

코드에서 line.split(",") 형태로 간단한 파서를 직접 만들어 쓰는 경우가 많지만, 이는 매우 위험합니다. 필드 값 안에 쉼표가 들어 있거나, 큰따옴표 이스케이프(""), 여러 줄에 걸친 텍스트가 포함되면 즉시 파싱이 깨집니다.

반드시 검증된 표준 라이브러리나 전용 파서를 사용하세요.

  • Python: 표준 라이브러리 csv 모듈 또는 pandas
  • JavaScript / Node.js: PapaParse 또는 csv-parse
  • Java: Apache Commons CSV 또는 OpenCSV

처리 전 데이터 유효성 검증

외부에서 전달받은 CSV 파일은 모든 행의 열 수가 일치하는지, 필수 헤더가 빠짐없이 존재하는지, 빈 셀이나 예기치 않은 구분자가 섞이지 않았는지 사전 검증한 뒤 처리해야 후속 파이프라인에서 발생하는 오류를 줄일 수 있습니다.

FormatArc로 CSV를 JSON으로 변환하기

대용량 CSV 파일이나 중요한 업무 데이터를 다룰 때 안전하게 변환하려면 CSV to JSON 변환기를 사용해 보세요.

FormatArc CSV to JSON 변환 결과 화면FormatArc CSV to JSON 변환 결과 화면

  1. CSV to JSON 변환기에 접속합니다.
  2. 왼쪽 입력창에 CSV 텍스트를 붙여넣습니다.
  3. 오른쪽 창에 정렬된 JSON 결과가 실시간으로 생성됩니다.

모든 연산은 브라우저의 WebAssembly 및 JavaScript 엔진을 통해 로컬에서 실행되므로, 고객 정보나 민감한 업무 데이터가 외부 서버로 전송되지 않습니다.

JSON의 기본 개념에 대해 더 자세히 알고 싶다면 JSON이란을, 프로그래밍 언어별 변환 절차와 세부 옵션은 CSV JSON 변환 가이드를 참고하세요. CSV 데이터를 README나 문서용 마크다운 표로 변환하려면 CSV를 마크다운 표로 변환하는 방법을, 표 형태의 JSON 데이터를 마크다운 표로 변환하고 싶다면 JSON to Markdown Table 변환 방법을 활용할 수 있습니다.

자주 묻는 질문(FAQ)

CSV와 TSV의 차이점은 무엇인가요?

CSV는 쉼표(,)를 구분자로 사용하고, TSV는 탭(\t) 문자를 구분자로 사용합니다. 데이터 내용 자체에 쉼표가 자주 포함되는 텍스트(주소, 문장 등)를 다룰 때는 탭으로 구분하는 TSV가 큰따옴표 이스케이프 처리가 적어 더 편리한 경우가 많습니다.

엑셀에서 CSV 저장 시 한글이 깨질 때는 어떻게 하나요?

Excel에서 저장할 때 "CSV(쉼표로 분리)" 대신 "CSV UTF-8(쉼표로 분리)" 형식을 선택하여 저장하면 UTF-8 BOM 형식으로 저장되어 최신 프로그램과 Excel 모두에서 한글이 잘 표시됩니다. 기존 CP949 파일이라면 텍스트 에디터(VS Code, 메모장 등)에서 "인코딩하여 다시 저장" 메뉴를 통해 UTF-8로 변환하면 됩니다.

CSV 파일에 용량 제한이 있나요?

CSV 파일 포맷 자체에는 행 수나 파일 크기 제한이 없습니다. 다만 32비트 프로그램이나 Microsoft Excel(최대 1,048,576행 및 16,384열) 같은 특정 애플리케이션으로 열 때는 소프트웨어 자체의 제한이 적용될 수 있습니다.

정리

  • CSV는 쉼표로 열을 구분하고 줄바꿈으로 행을 구분하는 가장 단순한 2차원 표 형식입니다.
  • RFC 4180 사양에 따라 쉼표, 줄바꿈, 큰따옴표가 포함된 필드는 큰따옴표로 감싸고, 큰따옴표 자체는 ""로 이스케이프합니다.
  • 한글 환경에서는 UTF-8 BOM과 CP949의 차이로 인해 엑셀에서 한글 깨짐이 발생하기 쉬우므로 인코딩 관리가 필수적입니다.
  • 평면적인 CSV 데이터를 계층 구조화하거나 API로 전송하려면 CSV to JSON 변환기를 활용하여 손쉽게 변환할 수 있습니다.