CSV를 열었더니 메모가 옆 열로 밀리는 경우, 글꼴보다 구분 문자를 먼저 확인하세요. CSV의 쉼표는 열을 나누는 기호이지만 셀 안에도 들어갈 수 있습니다. 파일을 줄 단위로 나눈 뒤 모든 쉼표를 다시 나누는 코드로는 이 차이를 처리할 수 없습니다.

세 줄짜리 파일부터 만듭니다

아래 내용을 UTF-8 텍스트 파일 example.csv로 저장하세요. 실제 연락처나 업무 자료 대신 쓰는 시험용 데이터입니다. 파일 변환기에 넣으면 제목 행을 포함해 3행, 각 행은 3열이어야 합니다.

name,note,count
alpha,"left,right",2
beta,"say ""hello""",3
행첫 번째 셀두 번째 셀세 번째 셀
제목namenotecount
첫 데이터alphaleft,right2
둘째 데이터betasay "hello"3

둘째 줄을 단순히 쉼표에서 자르면 4개 조각이 됩니다. 그러나 left,right는 따옴표로 감싼 하나의 필드입니다. 필드 안의 따옴표는 연속된 두 따옴표로 표현합니다. 이 규칙은 RFC 4180에 설명돼 있습니다. RFC는 모든 제품의 동작을 보장하는 인증서가 아니며, 구현마다 구분자·인코딩 처리에 차이가 있을 수 있습니다. 확인일은 2026년 9월 22일입니다.

눈으로 읽기와 다시 내보내기를 나누세요

  1. 파일을 넣고 미리보기에서 3행·3열인지 확인합니다.
  2. 두 번째 열에 left,right가 한 셀로 보이는지 확인합니다.
  3. 마지막 행의 메모에 따옴표가 한 쌍만 보이는지 확인합니다.
  4. 출력 형식에서 CSV를 고르고 각각 바꾸기를 실행합니다.
  5. 내려받은 파일을 텍스트 편집기로 열어 쉼표가 든 필드의 바깥 따옴표와 내부 따옴표의 이중 표기가 유지됐는지 확인합니다.

앱이 읽을 때 맞게 보였더라도 출력기가 따옴표를 빠뜨리면 다음 프로그램에서 열이 밀립니다. 줄바꿈 형식이나 마지막 빈 줄이 달라질 수 있으므로 파일 바이트가 완전히 같은지보다 해석한 셀 값과 개수를 먼저 비교하세요.

한글 깨짐과 열 밀림은 다른 문제입니다

한글만 깨지면 파일 인코딩을 확인합니다. 열은 유지되는데 0012가 12로 바뀐다면 숫자로 자동 해석됐을 가능성을 확인하세요. 이 글의 시험에는 선행 0, 날짜 자동 변환, 셀 안 줄바꿈, 여러 인코딩을 넣지 않았으므로 그 항목까지 검증했다고 보아서는 안 됩니다.

스프레드시트에서 가져올 때는 식별번호·우편번호 같은 열을 텍스트로 지정할 수 있는지 확인하세요. 외부에서 받은 CSV를 열 때는 수식처럼 보이는 셀도 검토해야 합니다. 따옴표 처리가 맞다는 사실만으로 임의의 외부 파일을 안전하게 실행·열람할 수 있다는 뜻은 아닙니다.

재현 결과와 다음 단계

2026년 9월 22일 로컬 Chrome 자동 검사에서 위 표의 셀 값을 비교하고 CSV 재출력의 쉼표·따옴표 표기를 확인했습니다. Excel·Google Sheets·한글 프로그램에서의 재개방 결과는 포함하지 않았습니다.

서식을 유지하는 문서 출력이 필요하다면 변환 파일 확인 순서를 읽으세요. 구현 구조는 공통 문서 모델 개발 기록에서 설명합니다.