* CSV
: 스프레드시트 프로그램들 사이에서, 데이터를 교환하거나 변환하기 위함


* CSV 포맷 정의

1) 각 레코드는 CRLF로 구분된 라인에 구현됨
aaa, bbb, ccc CRLF
zzz, yyy, xxx CRLF 이런식

2) 마지막 레코드는 CRLF를 포함할수도, 하지 않을 수도 있다.
aaa, bbb, ccc CRLF
zzz, yyy, xxx

3) 첫째줄에는 헤더라인(컬럼명)
: 헤더라인은 일반적인 다른 라인(데이터)들과 포맷이 일치해야하고, 레코드의 필드 수와 일치해야함
: 이 헤더라인이 존재하는지 그렇지 않은지는 반드지 MIME타입의 "header" 매개변수에 의해
명시 되어야 함

4) 모든 레코드는 콤마로 구분된 하나 이상의 필드가 존재해야하며, 모두 같은 수의 필드를 포함

5) 공백은 데이터로 간주되지, 무시되지 않음.

6) 레코드의 마지막 필드는 반드시 콤마를 포함하지 않습니다 (-> 꼭 포함하지 않아도 된다는건가. 절대 포함하면 안된다는건가)

7) 각 필드는 쌍따옴표의 내부에 존재할수도 그렇지 않을 수도 있음.
만약 필드가 쌍따옴표에 의해 둘려쌓여 있지 않다면, 필드 내부에는 쌍따옴표를 데이터로 사용할 수 없음

8) 필드가 쌍따옴표나 CRLF, 콤마등의 데이터를 가지기 위해서는 반드시 쌍따옴표에 의해 해당 필드가 둘러쌓여있어야 함
"aaa","b CRLF
bb","ccc" CRLF

9) 쌍따옴표가 필드의 데이터로 사용된다면, 해당 쌍따옴표는 다른 쌍따옴표에 의해 탈출문자열로 표현되어야함
"aaa", "b""bb", "ccc"
-> aaa | b"bb | ccc -> 이렇게 들어간다는건가?
  


CRLF?
CR = Carriage Return
LF = Line Feed

CR 과 LF 는 줄바꿈을 의미하는 컨트롤 캐릭터이고, 각각 0x0D (13 decimal), 0x0A (10 decimal)를 가리킨다.
윈도우는 CR LF 를, 유닉스는 LF를, 맥의 초기 버전(9 버전 이하)은 CR을 사용한다.

이 두 키는 오래 전 타자기 시절부터 있었던 건데,
LF는 커서의 위치는 그대로 두고 종이를 한 라인 위로 올리는 동작을,
CR는 현재 라인에서 커서의 위치를 맨 앞으로 옮기는 동작을 의미했다고 한다.
CR + LF 는 두 동작을 합해서, 커서를 다음 라인의 맨 앞으로 옮겨주는 것이었다.

decimal?
흠.. 소수점이라는데. 13데미컬이면 소수점 13자리까지 지원한다는건가?

+ Recent posts