구분 문자

en:Delimiter CSV 텍스트 파일에서는 쉼표(빨간색)가 필드 구분자로 사용된다. **구분 문자**(Delimiter)는 일반 텍스트 또는 데이터 스트림에서 별도의 독립적 영역 사이의 경계를 지정하는 데 사용하는 하나의 문자 혹은 문자들의 배열을 말한다.url-status=dead 구분 문자의 한 예로 쉼표가 있는데, CSV(comma-separated values) 파일의 필드 구분자의 역할을 한다. 영어로 Delimit이 "범위(한계)를 정하다"라는 의미이다. 공식 문서에서는 'delim'와 같은 약어로 표시되기 때문에 주의가 필요하다. 예를 들어 istream& getline (istream& is, string& str, char delim); 와 같이 표시가 된다. 구분 문자는 데이터 스트림의 경계를 지정하는 다양한 방법 중 하나이다. 예를 들어, 선언적 표기법(Declarative notation)은 데이터 경계를 지정하는 다른 방법으로서, 데이터 스트림이 시작할 때 길이 필드에 그 스트림에 포함된 문자의 수를 지정하여 데이터의 경계를 지정한다.isbn = 978-0-7190-0555-8
# 개요
구분 문자는 다음과 같이 나눌 수 있다.: * 필드/레코드 구분 문자 * 영역 구분 문자
## 필드와 레코드 구분 문자
필드 구분 문자는 데이터 필드를 분리한다. 레코드 구분 문자는 필드들의 그룹을 분리한다.isbn =90-5199-114-2 p. 141 예를 들어, CSV 파일 형식은 필드 간의 구분 문자로서 쉼표를 사용하고 레코드 사이의 구분자로는 줄바꿈(end-of-line) 문자를 사용한다. 다음의 예를 보자. 성,이름,나이,연봉 김,영희,33,₩30000000 홍,길동,28,₩25250000 이,철수,35,₩28700000 이 예는 CSV 파일 형식을 사용하여 간단한 플랫 파일 데이터베이스 테이블을 표현한다.
## 영역 구분 문자
영역 구분 문자(혹은 블록 구분 문자, 괄호 구분 문자)는 텍스트 영역의 시작과 끝을 모두 표시한다.isbn = 0-596-00289-0 p. 319isbn = 1-55860-442-1 영역 구분 문자의 일반적인 예는 다음과 같다.isbn=0-596-00027-8 {| class="wikitable" |- !구분 문자 ! |설명 |- | `(` and `)` | 괄호. 리스프 프로그래밍 언어의 문법에서는 주로 이 괄호를 사용하여 인식한다.isbn = 0-7923-7744-3p. 3 |- | `{` and `}` | 중괄호 (혹은 컬리 브래킷isbn = 978-0-7637-3832-7컬리 브래킷과 세미콜론이 특징인 C-스타일 프로그래밍 언어를 참조. ) |- | `[` and `]` | 대괄호 (일반적으로 첨자를 나타내기 위해 사용된다.) |- | `` | 꺾쇠 괄호isbn = 978-0-306-45972-6HTML에서 사용되는 문법과 구분 문자들을 설명. |- | `"` and `"` | 일반적으로 문자열을 나타내기 위해 사용된다.isbn = 978-0-596-10105-3 문자열을 설명. |- | `'` and `'` | 일반적으로 문자열을 나타내기 위해 사용된다. |- | ` and `?>` | XML 처리 명령어 표시에 사용된다.isbn = 978-0-672-32471-0 XML 처리 명령을 설명. P. 21. |- | `/*` and `*/` | 일부 프로그래밍 언어의 주석을 나타내기 위해 사용된다.isbn = 978-1-931836-54-8 single-line 과 multi-line comments를 설명. P. 72. |- | `` | 언어의 경계를 지정하는 일부 웹 템플릿들에 사용된다. 이들은 또한 *템플릿 구분 문자* 로도 불린다.accessdate = 2010-03-12 See e.g., Smarty template system documentation, "escaping template delimiters". |}
### 규약
컴퓨팅 플랫폼은 역사적으로 관례에 따라, 특정한 구분 문자를 사용한다. International Organization for Standardization (December 1, 1975). "The set of control characters for ISO 646 url=https://web.archive.org/web/20120729193430/http://www.itscj.ipsj.or.jp/ISO-IR/001.pdf". *Internet Assigned Numbers Authority Registry* . Alternate U.S. version: url=https://web.archive.org/web/20060305121105/http://www.itscj.ipsj.or.jp/ISO-IR/006.pdf. Accessed August 7, 2005. 다음의 표가 비교를 위한 몇 가지 예를 보여준다. **프로그래밍 언어** *(같이 보기* , 프로그래밍 언어 (문법)의 비교) {| class="wikitable" ! !문자열 !명령문의 끝 |- !파스칼 | 작은따옴표 | 세미콜론 |- !C | 작은따옴표, 큰따옴표 | 세미콜론 |- |} **필드와 레코드 구분 문자** ''(참고: ASCII, 제어 문자). {| class="wikitable" ! !필드의 끝 !레코드의 끝 !파일의 끝 |- ! Unix, Mac OS X, Amiga OS | Tab | LF | none |- ! Windows, MS-DOS, OS/2, CP/M | Tab | CRLF | Control-Zisbn = 978-0-937175-73-6 control-z의 사용을 설명. p.156 |- ! Classic Mac OS, AppleDOS, ProDOS, GS/OS | Tab | CR | none |- ! ASCII/Unicode | UNIT SEPARATOR
Position 31 (U+001F) | RECORD SEPARATOR
Position 30 (U+001E) | FILE SEPARATOR
Position 28 (U+001C) |}
## 구분 문자 충돌
구분 문자 충돌은 작성자나 프로그래머가 구분자를 별도의 영역 사이의 경계로 해석하려는 의도 없이 텍스트에 구분자를 도입할 때 발생하는 문제이다.isbn = 978-0-596-52812-6 describing solutions for embedded-delimiter problems p. 472. 예를 들어 XML의 경우 작성자가 꺾쇠 괄호 문자를 지정하려고 할 때마다 이런 일이 발생할 수 있다. 대부분의 파일 유형에는 필드 구분 기호와 레코드 구분 기호가 모두 있으며 둘 다 충돌할 수 있다. 예를 들어, CSV (파일 형식) 파일의 경우 작성자가 필드 값의 일부로 쉼표를 포함하려고 시도할 때마다(예: salary = "$30,000") 필드 충돌이 발생할 수 있으며 필드 충돌이 발생할 때마다 레코드 구분 기호 충돌이 발생할 수 있다. 여러 줄이 포함되어 있다. 레코드와 필드 구분 기호 충돌은 모두 텍스트 파일에서 자주 발생한다. 어떤 상황에서는 악의적인 사용자나 공격자가 이 문제를 의도적으로 악용하려고 할 수도 있다. 결과적으로 구분 기호 충돌은 보안 취약점 및 악용의 원인이 될 수 있다. 악의적인 사용자는 SQL 및 HTML과 같은 언어의 구분 기호 충돌을 활용하여 각각 SQL 삽입 및 사이트 간 스크립팅과 같은 잘 알려진 공격을 배포할 수 있다.
## 해결책
구분자 충돌은 매우 일반적인 문제이기 때문에 이를 방지하기 위한 다양한 방법이 개발되었다. 일부 작성자는 데이터 스트림 자체에 나타날 가능성이 없는 구분 기호 문자(또는 문자 시퀀스)를 선택하여 문제를 방지하려고 시도할 수 있다. 이 임시 접근 방식은 적합할 수 있지만 반드시 데이터 스트림에 나타날 내용에 대한 정확한 추측에 따라 달라지며 악의적인 충돌에 대한 보안을 제공하지 않는다. 따라서 다른 보다 공식적인 규칙도 적용된다.