WIPIVERSE

새줄 문자

새줄 문자(newline)는 텍스트의 한 줄이 끝남을 표시하는 문자 또는 문자열이다. 개행 문자, 줄바꿈 문자(line break), 엔드오브라인(EOL; end-of-line)과 같은 뜻으로 사용된다. 기종이나 운영 체제에 따라 새줄 문자를 나타내는 코드가 다를 수 있으며, 텍스트를 다른 시스템으로 전송할 때 새줄 문자의 치환 작업이 필요할 수 있다.

역사

새줄 문자의 기원은 텔레타이프(teletype)와 초기 컴퓨터 시스템에서 찾을 수 있다. 1963년부터 1968년까지 ISO와 ASA(ANSI의 전신)는 ASCII 표준을 개발하면서 새줄 문자에 대한 규정을 마련했다. ISO 초안은 CR+LF와 LF를 새줄 문자로 정했고, ASA 초안은 CR+LF만 지원했다.

텔레타이프의 프린터가 다음 줄의 처음부터 인쇄하기 위해서는 두 글자를 인쇄하는 시간이 필요했다. 프린터에서 좌우로 움직이는 캐리지(carriage)가 오른쪽 끝에서 왼쪽 끝으로 이동하는 시간이 두 글자를 인쇄하는 만큼 걸렸기 때문에, 새줄 문자로 코드 하나만 쓸 경우 다른 한 글자를 인쇄할 수 없었다. 그래서 텔레타이프를 쓰던 시절에는 CR+LF 두 코드를 새줄 문자로 사용했다.

1964년에 나온 운영 체제 멀틱스(Multics)는 디스크와 메모리 비용 절감을 위해 새줄 문자를 LF 하나로 통일했다. 유닉스는 멀틱스의 새줄 문자 관례를 이어받았고, 리눅스도 이 방식을 사용하고 있다. 1981년에 등장한 MS-DOS는 CP/M의 CR+LF 방식을 따랐으며, 윈도우도 이 관례를 따르고 있다.

표현 방식

줄바꿈을 표현하는 방법은 시스템과 운영 체제에 따라 여러 가지가 있다. 윈도우는 ASCII의 CR+LF로 새줄을 나타내고, 유닉스는 LF로 새줄을 나타낸다. 맥 OS는 버전 9까지 CR을 사용했지만 버전 10부터 LF를 사용하고 있다.

ASCII

ASCII 시스템에서는 새줄 문자로 라인 피드(line feed, LF, ' ', 0x0A)와 캐리지 리턴(carriage return, CR, '\r', 0x0D)이 주로 사용된다. 라인 피드는 프린터에서 종이가 한 줄씩 인쇄되며 나오는 것을 뜻하고, 캐리지 리턴은 프린터에서 실제 인쇄를 수행하는 장치가 한 줄의 끝에서 시작 위치로 돌아가는 것을 뜻한다. 드물게 RS(record separator, 0x1E)를 새줄 문자로 쓰는 시스템도 있었다.

HTTP, SMTP, FTP, IRC 등 인터넷 프로토콜 대부분은 ASCII의 CR+LF를 새줄 문자로 사용하도록 규정하고 있으나, 홀로 쓰인 LF도 지원하도록 권장하고 있다.

유니코드

유니코드 표준은 여러 글자를 줄바꿈 문자로 정의했다. 유니코드를 지원하는 프로그램은 다음의 문자들을 한 줄의 끝으로 인식해야 한다.

  • LF: 라인 피드(Line Feed), U+000A
  • FF: 폼 피드(Form Feed), U+000C
  • CR: 캐리지 리턴(Carriage Return), U+000D
  • CR+LF: 연속된 CR과 LF
  • NEL: 다음 줄(Next Line), U+0085
  • LS: 줄 구분자(Line Separator), U+2028
  • PS: 문단 구분자(Paragraph Separator), U+2029

EBCDIC

IBM 메인프레임, z/OS(OS/390), i5/OS(OS/400) 등 EBCDIC 시스템은 새줄 문자로 NEL(next line, 0x15)을 사용한다. EBCDIC에도 CR, LF로 불리는 글자가 있지만 ASCII의 것과 코드가 다르며, EBCDIC 시스템 중에는 NEL 코드가 다른 것도 있어 주의가 필요하다.

기타 코드

CDC 6000 시리즈의 운영 체제는 60비트짜리 단어 끝 부분에 6비트짜리 글자 2개 이상이 0으로 채워진 상태를 새줄 문자로 정의했다. 싱클레어 리서치의 가정용 컴퓨터 ZX80, ZX81은 새줄 문자 코드가 0x76이었다.

레코드 방식

옛날의 메인프레임 운영 체제는 텍스트 한 줄마다 레코드에 저장하는 방식을 사용했다. 레코드의 시작 부분에 캐리지 제어 문자를 둬서 줄바꿈 여부와 캐리지 리턴 여부를 조절할 수 있게 했다. 몇몇 메인프레임 운영 체제는 고정된 줄 길이(주로 80자)로 한 줄을 저장했는데, 이는 천공 카드 한 장마다 한 줄씩 기록하고 그 길이가 80자였던 방식을 흉내 낸 것이다. OpenVMS도 레코드 기반 파일 시스템을 사용한다.

기타 특징

새줄 문자가 마지막 줄 끝에도 들어가는지 여부는 시스템에 따라 다를 수 있다. 대부분의 시스템이 관습적으로 마지막 줄 끝에도 새줄 문자를 넣으며, 프로그램 중에는 마지막 줄 끝에 새줄 문자가 없으면 오류가 발생하는 것도 있다. 자동 줄 바꿈 기능이 있는 소프트웨어는 주로 문단 사이 또는 수직 목록 사이에서 새줄 문자를 사용하며, 새줄 문자를 사용하는 방식으로 하드 리턴과 소프트 리턴이 있다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기