개발자 도구 · 구문 변환기
CSV의 누락된 표준: RFC 4180이 다루는 내용과 공개된 내용
· 배경
CSV JSON 데이터 형식
CSV은 모든 사양보다 앞서며 이를 설명하는 RFC는 정보 제공용이며 의도적으로 범위를 좁혔습니다. 이 게시물에서는 RFC 4180이 정의하는 내용, 이에 대해 아무 말도 하지 않는 내용, CSV 변환이 항상 협상인 이유를 설명합니다.
누구의 CSV이 정확합니까? — 동일한 테이블의 두 내보내기(하나는 세미콜론, 다른 하나는 쉼표, 둘 다 CSV라고 함)
ToolAcre는 JSON에서 쉼표, 세미콜론 또는 탭으로 구분된 출력을 내보낼 수 있습니다. 두 개의 경쟁하는 CSV 내보내기를 읽거나 둘 중 하나가 정확하다고 선언하지 않습니다. CSV는 여기서 쓰기 전용이므로 구분 기호 선택은 감지 알고리즘이 아닌 명시적인 출력 옵션입니다.
이러한 구별은 일반적인 사실 오류를 방지합니다. 세미콜론을 쓸 수 있는 인터페이스는 알 수 없는 파일에서 세미콜론을 식별하고 로케일 소수점을 처리하거나 헤더를 해석할 수 있다는 것을 입증하지 못했습니다. 이는 의도적으로 제외된 별도의 입력 책임입니다.
두 개의 구분 기호 선택은 출력 옵션이지만 이 패널이 두 파일 중 하나를 읽는다는 증거는 아닙니다.
저장소에는 초기 스프레드시트나 데이터베이스 기록에 대한 소스가 없으므로 기사에서 연대기를 만들지 않습니다. 이는 현재 작성기와 해당 테스트(레코드, 필드, 구분 기호, CRLF 종료 및 인용 이스케이프)로 시작됩니다.
역사적 맥락은 나중에 검토된 출처를 통해 추가될 수 있습니다. 변환기 구현은 컨벤션이 처음 등장한 시기나 공급업체가 갈라진 이유가 아니라 현재 제품이 작성되는 내용에 대한 증거입니다.
CSV RFC 이전 기록 4180은 저장소 증거 외부에 있습니다.
구분 기호, 큰따옴표, 캐리지 리턴 또는 줄 바꿈이 포함된 필드는 큰따옴표로 묶이고 포함된 각 따옴표는 두 배로 표시됩니다. 일반적인 스프레드시트 트리밍을 방지하기 위해 선행 또는 후행 공백도 인용됩니다. 레코드는 CRLF로 끝나고 파일은 종료됩니다.
이러한 동작은 저장소에서 테스트된 RFC 4180 스타일 규칙을 따릅니다. 이 기사에서는 작성자가 대체 구분 기호도 지원하고 좁은 문법 외부에 보안 처리를 추가하기 때문에 보편적인 규정 준수 주장을 피합니다.
작성자는 완전한 표준 준수를 주장하지 않고 RFC 4180 스타일 인용 및 CRLF를 사용합니다.
CSV 셀은 JSON 유형을 유지하지 않습니다. Null과 빈 문자열은 모두 빈 셀이 되고 부울과 숫자는 텍스트 표현이 됩니다. UTF-8 콘텐츠가 전달되며 필요한 소비자를 위해 선택적인 BOM이 앞에 붙을 수 있습니다.
로케일 해석이 포함되지 않습니다. 세미콜론 구분 기호는 소수점 쉼표와 공존할 수 있지만 작성자는 로캘별로 숫자 형식을 다시 지정하거나 날짜 유형을 인코딩하지 않습니다. 수신 애플리케이션은 여전히 각 필드를 해석하는 방법을 결정합니다.
이 작성자에서는 인코딩, 유형 및 로케일 경계가 명시적으로 남아 있습니다.
구현된 변형은 쉼표, 세미콜론, 탭과 선택적 BOM입니다. `=`, `+`, `-`, `@`, 탭 또는 캐리지 리턴으로 시작하는 수식과 유사한 텍스트에는 기본적으로 아포스트로피가 접두어로 붙으므로 스프레드시트에서는 이를 텍스트로 처리합니다. 사용자는 해당 보호를 비활성화하고 경고를 받을 수 있습니다.
이 작성기에는 `sep=` 힌트 또는 백슬래시 이스케이프 모드가 없습니다. 이를 배송된 옵션으로 언급하는 것은 거짓입니다. 포함된 인용문은 테스트에서 주장한 대로 정확히 두 배를 사용합니다.
관찰된 스프레드시트 변형은 여기에 구현된 옵션 및 보호로 제한됩니다.
이 경로의 모든 가정은 구문 분석된 JSON에서 시작됩니다. 어떤 값이 행을 제공하는지, 중첩이 어떻게 점으로 구분된 열로 평면화되는지, 어떤 키가 헤더가 되는 지입니다. 들어오는 CSV이 거부되기 때문에 들어오는 CSV 방언에 대해 어떤 가정도 이루어지지 않습니다.
이 수정은 통합 문서의 요청된 방향을 반대로 바꿉니다. CSV-to-JSON 워크플로는 다른 도구에서 구분 기호, 인용, 헤더 및 셀 유형을 선택해야 합니다. ToolAcre의 오류는 조용히 추측하기보다는 거부를 설명합니다.
변환 가정은 CSV 입력이 거부되었기 때문에 JSON-to-CSV에만 적용됩니다.
잘못된 형식의 CSV 복구는 범위를 벗어납니다. 깨진 따옴표, 혼합 인코딩 및 실수로 구분된 구분 기호에는 CSV 클리너 또는 명시적인 진단 기능이 있는 다른 파서가 필요합니다. 구문 변환기는 손상된 CSV 텍스트가 아닌 엄격한 JSON 텍스트를 수신합니다.
중첩 트리가 모호한 점으로 구분된 열을 생성하거나 2,000 열을 초과하는 경우 출력이 여전히 대상에 적합하지 않을 수 있습니다. 경고 및 캡은 다운로드 전에 테이블 모양의 오류를 노출합니다.
요점: CSV은 형식이 아니라 규칙입니다. 구문 변환기 패널이 올바른 형식의 파일을 검사할 수 있는 JSON로 변환하는 방법
CSV을 선택 사항이 표시되어야 하는 규칙으로 취급합니다. ToolAcre는 출력 선택 사항을 문서화하고 지정되지 않은 역방향을 거부합니다. 이는 근본적으로 다른 두 가지 작업에 하나의 버튼을 사용하는 것보다 더 안정적입니다.
수신 시스템에 대한 구분 기호, 따옴표, CRLF, BOM 및 수식 이스케이프를 검사합니다. 입력 구문 분석이 필요한 경우 작성자의 규칙을 알 수 없는 파일에 전송하는 대신 묻는 도구를 사용하십시오.
실제 승인 확인은 의도된 소비자에서 생성된 파일을 열고 원시 바이트 또는 텍스트도 검사합니다. 소비자 관점에서는 디스플레이 및 가져오기 문제를 포착합니다. 원시 보기에서는 스프레드시트를 다시 해석하지 않고도 구분 기호, 큰따옴표, CRLF 및 선택적 BOM을 확인합니다. 수식과 유사한 문자열을 비활성 텍스트로 테스트하고 음수를 숫자로 테스트합니다. 이러한 쌍을 이루는 검사는 모든 프로그램이 CSV 규칙을 동일하게 구현한다고 주장하지 않고 작성자의 실제 계약을 확인합니다.