맨위로가기

ASCII

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

ASCII는 미국 표준 협회가 개발한 7비트 문자 인코딩으로, 1963년에 표준화되었다. 0부터 127까지의 숫자에 문자, 숫자, 제어 문자를 할당하여, 초기 컴퓨터와 통신에 사용되었다. ASCII는 여러 버전으로 표준화되었으며, 1968년 미국 정부가 구매하는 모든 컴퓨터가 ASCII를 지원하도록 의무화했다. ASCII는 유니코드의 기반이 되었으며, UTF-8은 ASCII와 하위 호환성을 가진다. ASCII는 영어 외의 언어를 표기하는 데 한계가 있었고, 문자 깨짐 등의 문제로 인해 유니코드의 등장과 함께 점차 사용이 줄어들었다.

더 읽어볼만한 페이지

  • 문자 집합 - 점자
    점자는 루이 브라이유가 개발한 시각 장애인용 촉각 문자 체계로, 6점 점자를 사용하여 133개 이상의 언어에 적용되었으며, 교육, 정보 접근, 사회 참여에 필수적인 역할을 수행하지만 문해력 저하와 교육의 어려움이라는 과제도 안고 있다.
  • 문자 집합 - ISO/IEC 646
    ISO/IEC 646는 ASCII 기반의 7비트 문자 인코딩 표준으로, 국가별 변형이 존재했으나, 최종 개정판은 ASCII와 호환되도록 정의되었고, 현재는 ITU-T 권고 T.50 IRA가 현행 표준으로 유지되고 있다.
  • 문자 인코딩 - 유니코드
    유니코드는 세계의 모든 문자를 하나의 컴퓨터 인코딩 표준으로 통합하기 위해 설계되었으며, 유니코드 컨소시엄에 의해 관리되고 UTF-8, UTF-16, UTF-32 등의 부호화 형식을 제공하지만, 일부 문자 표현 문제, 버전 간 비호환성, 레거시 인코딩과의 호환성 문제 등의 과제를 안고 있다.
  • 문자 인코딩 - UTF-8
    UTF-8은 유니코드 문자를 표현하는 가변 길이 문자 인코딩 방식으로, ASCII 코드와 호환성을 유지하며 다양한 언어의 문자를 표현할 수 있도록 설계되었지만, 보안 문제점과 공간 효율성 측면에서 단점을 가진다.
ASCII
기본 정보
MIME 형식us-ascii
언어영어, 말레이어, 로토카스어, 인테르링구아, 이도, X-SAMPA
이전ITA 2, FIELDATA
다음ISO/IEC 8859, ISO/IEC 10646 (유니코드)
분류ISO 646 시리즈
별칭ISO-IR-006
ANSI_X3.4-1968
ANSI_X3.4-1986
ISO_646.irv:1991
ISO646-US
us
IBM367
cp367
MIL-STD-188-100 (1972)의 ASCII 차트
MIL-STD-188-100 (1972)의 ASCII 차트
확장
확장 종류유니코드
ISO/IEC 8859 (시리즈)
KOI-8
OEM (시리즈)
Windows-125x (시리즈)
기타

2. 역사

아스키 코드는 지금의 미국 국가표준 협회(ANSI)의 전신인 미국 표준 협회(ASA)가 주도한 X3 위원회가 개발했다. 그 아래의 X3.2 소위원회는 1960년 10월 6일 아스키 표준화 작업을 시작하여, 1963년 표준화 초판을 발간했고,[73][74] 1967년 개정했으며,[75][76] 가장 최근의 업데이트는 1986년에 있었다.[77]

1963년 6월 17일에 미국 규격 협회(American Standards Association: ASA, 이후 ANSI)에 의해 "ASA X3.4" 규격 번호로 제정되었지만, 정보 기술 표준 국제 위원회(INCITS)의 발족에 따라 규격 번호가 2002년에 개정되어 현재 규격 번호는 "ANSI INCITS 4"이다.

ASCII는 1960년대 미국에서 영어 통신과 당시 미국의 컴퓨터에 필요한 문자나 기호 등이 포함되도록 정한 문자 코드이다.

0번부터 127번까지의 번호(수치)가 어떤 문자나 기호를 의미하는지를 정의하고 있다[64].

ASCII의 구성은 다음과 같다.

코드 범위 (16진)내용
00–1F제어 문자
20공백
21–7E그래픽 문자
7F제어 문자 (DEL영어)



== 버전 ==

ASCII는 여러 버전으로 표준화되었다:[2][6][19][21]


  • ASA X3.4-1963[2][6][19][21]
  • ASA X3.4-1965 (승인되었지만 출판되지는 않았지만, IBM 2260 및 2265 디스플레이 스테이션 및 IBM 2848 디스플레이 컨트롤에 사용됨)[2][22][19][21]
  • USAS X3.4-1967[2][7][21]
  • USAS X3.4-1968[2][20][21]
  • ANSI X3.4-1977[21]
  • ANSI X3.4-1986[9][21]
  • ANSI X3.4-1986 (R1992)
  • ANSI X3.4-1986 (R1997)
  • ANSI INCITS 4-1986 (R2002)[23]
  • ANSI INCITS 4-1986 (R2007)[24]
  • INCITS 4-1986 (R2012)
  • INCITS 4-1986 (R2017)
  • INCITS 4-1986 (R2022)[25]


X3.15 표준에서 X3 위원회는 ASCII가 어떻게 전송되어야 하는지 (최하위 비트 우선)[2][26]와 천공 테이프에 기록되어야 하는지에 대해서도 다루었다. 그들은 자기 테이프에 대한 9 트랙 표준을 제안하고 일부 천공 카드 형식을 처리하려고 시도했다.

2. 1. 버전

ASCII는 여러 버전으로 표준화되었다:[2][6][19][21]

  • ASA X3.4-1963[2][6][19][21]
  • ASA X3.4-1965 (승인되었지만 출판되지는 않았지만, IBM 2260 및 2265 디스플레이 스테이션 및 IBM 2848 디스플레이 컨트롤에 사용됨)[2][22][19][21]
  • USAS X3.4-1967[2][7][21]
  • USAS X3.4-1968[2][20][21]
  • ANSI X3.4-1977[21]
  • ANSI X3.4-1986[9][21]
  • ANSI X3.4-1986 (R1992)
  • ANSI X3.4-1986 (R1997)
  • ANSI INCITS 4-1986 (R2002)[23]
  • ANSI INCITS 4-1986 (R2007)[24]
  • INCITS 4-1986 (R2012)
  • INCITS 4-1986 (R2017)
  • INCITS 4-1986 (R2022)[25]


X3.15 표준에서 X3 위원회는 ASCII가 어떻게 전송되어야 하는지 (최하위 비트 우선)[2][26]와 천공 테이프에 기록되어야 하는지에 대해서도 다루었다.[2] 그들은 자기 테이프에 대한 9 트랙 표준을 제안하고 일부 천공 카드 형식을 처리하려고 시도했다.[2]

3. 디자인

3. 1. 비트 폭

X3.2 소위원회는 초기 전신 타자기 인코딩 시스템을 기반으로 ASCII를 설계했다. ASCII는 디지털 비트 패턴과 문자 기호 간의 대응 관계를 지정한다. 이를 통해 디지털 장치는 서로 통신하고, 문자로 된 정보를 처리, 저장 및 통신할 수 있다. ASCII가 개발되기 전에는 26개의 영어 알파벳 문자, 10개의 숫자 및 11개에서 25개의 특수 그래픽 기호를 포함하는 인코딩이 사용되었다.[27][28]

국제 전화 및 전신 자문 위원회(CCITT) 국제 전신 알파벳 No. 2(ITA2) 표준,[27][28] FIELDATA, 초기 EBCDIC와 호환되는 제어 문자를 포함하려면 64개 이상의 코드가 ASCII에 필요했다. ITA2는 보도 코드를 기반으로 했다.[28]

위원회는 시프트 코드의 가능성에 대해 논의했지만, 데이터 전송의 안정성을 위해 시프트를 사용하지 않고 최소 7비트 코드를 필요로 하는 것으로 결정했다.[2] 8비트 코드가 이진화 십진법으로 2개의 숫자를 효율적으로 인코딩할 수 있지만, 데이터 전송 비용을 최소화하기 위해 7비트 코드를 사용하기로 결정했다. 천공 테이프가 한 위치에 8비트를 기록할 수 있었기 때문에, 필요에 따라 패리티 비트를 사용한 오류 검사도 가능했다.[2] 8비트 머신은 패리티 검사를 사용하지 않는 경우 일반적으로 여덟 번째 비트를 0으로 설정했다.[29]

3. 2. 내부 구조

ASCII 코드 자체는 식별의 용이성을 위해 대부분의 제어 코드가 함께 묶이고 모든 그래픽 코드가 함께 묶이도록 패턴화되었다.[2] 처음 두 개의 "ASCII 막대" (32개의 위치)는 제어 문자로 예약되었다.[2] 정렬을 쉽게 하기 위해 "공백" 문자는 그래픽보다 먼저 배치되어 2016진법 위치가 되었다.[2] 같은 이유로 구분자로 일반적으로 사용되는 많은 특수 기호가 숫자 앞에 배치되었다. 위원회는 대문자 64자 문자 집합을 지원하는 것이 중요하다고 결정하고 ASCII가 DEC SIXBIT 코드(1963)에서 수행된 것처럼 64자 그래픽 코드 집합으로 쉽게 축소될 수 있도록 패턴화하기로 결정했다.[2] 따라서 소문자는 대문자와 섞이지 않았다. 소문자와 다른 그래픽을 위한 옵션을 유지하기 위해 특수 및 숫자 코드는 문자 앞에 배열되었으며, 문자 "A"는 해당 영국 표준 초안과 일치하도록 4116진법 위치에 배치되었다.[2] 숫자 0–9는 011로 시작하지만 나머지 4비트는 이진수로 해당 값에 해당하므로 2진화 10진법과의 변환이 간단하다. (예: 5는 011''0101''로 인코딩되며, 여기서 5는 이진수에서 ''0101''이다).

비-영숫자 문자 중 다수는 타자기에서 시프트된 위치에 해당하도록 배치되었다. 중요한 점은 이것이 "전기" 타자기가 아닌 "기계식" 타자기를 기반으로 했다는 것이다.[30] 기계식 타자기는 Remington No. 2(1878)에 의해 설정된 ''사실상의'' 표준을 따랐으며, 시프트 키가 있는 최초의 타자기였으며, 23456789-의 시프트된 값은 "#$%_&'()였다. 초기 타자기는 ''0''과 ''1''을 생략하고 ''O''(대문자 ''o'')와 ''l''(소문자 ''L'')을 대신 사용했지만, 0과 1이 흔해지면서 1!0) 쌍이 표준이 되었다. 따라서 ASCII에서 !"#$%는 두 번째 막대, 1–5 위치에 배치되었으며, 인접한 막대에서 숫자 1–5에 해당한다. 그러나 괄호는 ''9''와 ''0''에 해당될 수 없었는데, ''0''에 해당하는 위치가 공백 문자에 의해 사용되었기 때문이다. 이는 _ (밑줄)을 ''6''에서 제거하고 나머지 문자를 이동하여 처리되었으며, 괄호를 ''8''과 ''9''로 배치하는 많은 유럽 타자기에 해당했다. 타자기와의 이러한 불일치는 비트 페어 키보드로 이어졌으며, 특히 ASCII에 해당하는 왼쪽 시프트 레이아웃을 사용한 Teletype Model 33은 기존 기계식 타자기와 달랐다.

IBM PC(1981)를 따른 컴퓨터, 특히 Model M(1984)에서 IBM Selectric(1961)을 비롯한 전기 타자기는 다소 다른 레이아웃을 사용했으며, 이 레이아웃은 "사실상의" 표준이 되었으며, 현대 키보드의 기호에 대한 시프트 값은 이전 키보드만큼 ASCII 테이블에 가깝게 일치하지 않는다. /? 쌍도 No. 2에서 유래되었으며, ,< .> 쌍은 일부 키보드에서 사용되었다. 그러나 ASCII는 ;: 쌍(No. 2에서 유래)을 분리하고 수학 기호(다양한 규칙, 일반적으로 -* =+)를 :* ;+ -=로 재배열했다.

당시 흔했던 일부 타자기 문자는 포함되지 않았는데, 특히 ½ ¼ ¢였으며, ^ ` ~는 국제적인 사용을 위해 분음 부호로, < >는 수학적인 사용을 위해, 일반적인 / 외에도 간단한 선 문자 \ |와 함께 포함되었다. ''@'' 기호는 유럽 대륙에서 사용되지 않았으며, 위원회는 프랑스어 변형에서 악센트가 있는 ''À''로 대체될 것으로 예상하여 ''@''를 문자 A 바로 앞인 4016진법 위치에 배치했다.[2]

데이터 전송에 필수적이라고 생각된 제어 코드는 메시지 시작(SOM), 주소 종료(EOA), 메시지 종료 (EOM), 전송 종료(EOT), "당신은 누구입니까?"(WRU), "당신입니까?"(RU), 예약된 장치 제어(DC0), 동기식 유휴(SYNC) 및 확인(ACK)이었습니다. 이것들은 비트 패턴 간의 해밍 거리를 최대화하도록 배치되었다.[2]

4. 문자 그룹

4. 1. 제어 문자

Serial 통신(RS-232, UART, USART...)이 적용된 곳에는 제어 문자가 아직도 많이 사용되고 있다.

이진법팔진법십진법십육진법약자설명한국어 설명
000 0000000000NULNull CharacterNULL
000 0001001101SOHStart of Header헤더 시작
000 0010002202STXStart of Text텍스트 시작, 헤더 종료
000 0011003303ETXEnd of Text텍스트 종료
000 0100004404EOTEnd of Transmission전송 종료, 데이터 링크 초기화
000 0101005505ENQEnquiry응답 요구
000 0110006606ACKAcknowledgment긍정 응답
000 0111007707BELBell경고음
000 1000010808BSBackspace백스페이스
000 1001011909HTHorizontal Tab수평 탭
000 1010012100ALFLine feed줄 바꿈
000 1011013110BVTVertical Tab수직 탭
000 1100014120CFFForm feed다음 페이지
000 1101015130DCRCarriage return복귀
000 1110016140ESOShift Out확장문자 시작
000 1111017150FSIShift In확장문자 종료
001 00000201610DLEData Link Escape전송 제어 확장
001 00010211711DC1Device Control 1장치 제어 1
001 00100221812DC2Device Control 2장치 제어 2
001 00110231913DC3Device Control 3장치 제어 3
001 01000242014DC4Device Control 4장치 제어 4
001 01010252115NAKNegative Acknowledgement부정 응답
001 01100262216SYNSynchronous idle동기
001 01110272317ETBEnd of Transmission Block전송블록 종료
001 10000302418CANCancel무시
001 10010312519EMEnd of Medium매체 종료
001 1010032261ASUBSubstitute치환
001 1011033271BESCEscape제어기능 추가
001 1100034281CFSFile Separator파일경계 할당
001 1101035291DGSGroup Separator레코드 그룹경계 할당
001 1110036301ERSRecord Separator레코드 경계 할당
001 1111037311FUSUnit Separator장치 경계 할당
111 11111771277FDELDelete삭제



처음 32개의 문자(10진수로 0–31)는 ASCII영어에서 제어 문자로 예약되어 있다. 이러한 제어 문자는 표시하기 위한 문자가 아니라 모니터프린터 등의 기기를 제어하기 위해 사용된다. 예를 들어, ASCII영어 10(10진수)은 line feed영어(줄 바꿈)을 나타내며 프린터의 용지 공급 등에 사용하고, ASCII영어 27은 이스케이프를 나타낸다.

ASCII영어 127(모든 비트가 켜짐, 즉, 2진수로 1111111)은 delete영어(삭제 문자)로 알려진 제어 문자이다. 이 기호가 나타나면 해당 부분의 데이터가 삭제되었음을 나타낸다. 이 제어 문자만 앞에 없고 마지막에 있는 이유는 천공 테이프에 기록은 덮어쓸 수 없기 때문에 삭제할 때는 모두 구멍을 뚫는 것으로 대응할 수 있기 때문이다(1111111은 모두 구멍이 뚫린 상태를 나타낸다). 또한, ASCII영어 0(모든 비트가 꺼짐, 즉 2진수로 0000000)은 Null영어 또는 널 문자라고 불리며, delete영어와 마찬가지로 많은 컴퓨터 시스템에서 무시된다. 이는 만약 천공 테이프와 반대로 1을 0으로 변경하여 데이터를 기록하고 덮어쓸 수 없는 매체가 있는 경우에도 대응할 수 있도록 하기 위함이다.

코드의 대부분은 데이터 전송 프로토콜에 사용된다.(예: 헤더 시작, 텍스트 시작, 텍스트 종료 등)

분리 기호는 자기 테이프에 저장을 위해 설계되었다.

XON영어 및 XOFF영어는 프린터와 같이 처리 속도가 느린 장치에서 데이터를 잃지 않도록 정보의 흐름을 제어하기 위해 사용하는 경우가 있다.

4. 1. 1. 제어 문자표

wikitext

제어할 때 쓰는 코드이다. Serial 통신(RS-232, UART, USART...)이 적용된 곳에는 아직도 많이 사용되고 있다.

이진법팔진법십진법십육진법약자설명한국어 설명
000 0000000000NULNull CharacterNULL
000 0001001101SOHStart of Header헤더 시작
000 0010002202STXStart of Text텍스트 시작, 헤더 종료
000 0011003303ETXEnd of Text텍스트 종료
000 0100004404EOTEnd of Transmission전송 종료, 데이터 링크 초기화
000 0101005505ENQEnquiry응답 요구
000 0110006606ACKAcknowledgment긍정 응답
000 0111007707BELBell경고음
000 1000010808BSBackspace백스페이스
000 1001011909HTHorizontal Tab수평 탭
000 1010012100ALFLine feed줄 바꿈
000 1011013110BVTVertical Tab수직 탭
000 1100014120CFFForm feed다음 페이지
000 1101015130DCRCarriage return복귀
000 1110016140ESOShift Out확장문자 시작
000 1111017150FSIShift In확장문자 종료
001 00000201610DLEData Link Escape전송 제어 확장
001 00010211711DC1Device Control 1장치 제어 1
001 00100221812DC2Device Control 2장치 제어 2
001 00110231913DC3Device Control 3장치 제어 3
001 01000242014DC4Device Control 4장치 제어 4
001 01010252115NAKNegative Acknowledgement부정 응답
001 01100262216SYNSynchronous idle동기
001 01110272317ETBEnd of Transmission Block전송블록 종료
001 10000302418CANCancel무시
001 10010312519EMEnd of Medium매체 종료
001 1010032261ASUBSubstitute치환
001 1011033271BESCEscape제어기능 추가
001 1100034281CFSFile Separator파일경계 할당
001 1101035291DGSGroup Separator레코드 그룹경계 할당
001 1110036301ERSRecord Separator레코드 경계 할당
001 1111037311FUSUnit Separator장치 경계 할당
111 11111771277FDELDelete삭제


4. 1. 2. Delete vs backspace

텔레타이프는 활자 헤드를 뒤로 움직일 수 없었기 때문에 키보드에 BS(백스페이스)를 보낼 키가 없었다. 대신 이라고 표시된 키가 있었는데, 이 키는 코드 127(DEL)을 보냈다. 이 키의 목적은 수동으로 입력된 종이 테이프의 실수를 지우는 것이었다. 작업자는 테이프 펀치 버튼을 눌러 테이프를 되돌린 다음, 삭제 문자를 입력하여 모든 구멍을 뚫고 실수를 무시하도록 의도된 문자로 대체했다.[34] DEC의 저렴한 컴퓨터와 함께 텔레타이프가 널리 사용되었으며, 이러한 시스템은 사용 가능한 키를 사용해야 했기에 DEL 문자가 이전 문자를 지우는 데 할당되었다.[35][36] 이 때문에 DEC 비디오 터미널은 (기본적으로) "백스페이스"라고 표시된 키에 DEL 문자를 보내는 반면, "Delete"라고 표시된 별도의 키는 이스케이프 시퀀스를 보냈다. 반면, 다른 많은 경쟁 터미널은 백스페이스 키에 BS 문자를 보냈다.

초창기 유닉스 tty 드라이버는 일부 현대 구현과 달리 정규 입력 처리(매우 간단한 라인 편집기가 사용 가능한 경우)에서 이전 문자를 지우도록 설정할 수 있는 문자가 하나뿐이었다. 이는 BS 또는 DEL로 설정할 수 있었지만 둘 다는 안 되었고, 사용자는 어떤 터미널을 사용하는지에 따라 결정해야 하는 모호한 상황이 반복적으로 발생했다(ksh, bash, zsh와 같이 라인 편집을 허용하는 셸은 둘 다 이해한다). BS 문자를 보내는 키가 없다는 가정으로 인해 Ctrl+H를 GNU Emacs의 "help" 접두사 명령과 같은 다른 용도로 사용할 수 있었다.[37]

ASCII영어 127(모든 비트가 켜짐, 즉, 2진수로 1111111)은 delete영어(삭제 문자)로 알려진 제어 문자이다. 이 기호가 나타나면 해당 부분의 데이터가 삭제되었음을 나타낸다. 이 제어 문자만 앞에 없고 마지막에 있는 이유는 천공 테이프에 기록은 덮어쓸 수 없기 때문에 삭제할 때는 모두 구멍을 뚫는 것으로 대응할 수 있기 때문이다(1111111은 모두 구멍이 뚫린 상태를 나타낸다).

2진8진10진16진약어기호 표현CS이스케이프 시퀀스이름/의미
000 1000010808BS}}^H\b백스페이스
111 11111771277FDEL}}^?삭제


4. 1. 3. Escape

"이스케이프" 문자(ESC, 코드 27)는 원래 다른 제어 문자를 해당 의미를 호출하는 대신 리터럴로 전송할 수 있도록 하기 위한 것이었다.[38] 이는 C 언어 문자열 및 특정 문자에 예약된 의미가 있는 다른 시스템에서 발견되는 "이스케이프"의 의미와 동일하다. 현대에는 터미널로 전송된 ESC는 일반적으로 ANSI 이스케이프 코드(제어 시퀀스 소개자, "CSI", "ESC [") 형식의 명령 시퀀스의 시작을 나타낸다.[38]

4. 1. 4. End of line

텔레타이프 기계는 텍스트 줄의 끝을 carriage return영어(캐리지 리턴, 인쇄 헤드를 줄의 시작 부분으로 이동)과 line feed영어(라인 피드, 인쇄 헤드를 움직이지 않고 용지를 한 줄 앞으로 이동) 두 가지 모두로 표시해야 했다.[40] 이 두 문자의 조합은 수동 타자기에서 비롯된 것으로, 다음 줄을 위해 용지를 오른쪽으로 밀어(캐리지 리턴) 활자 막대가 리본을 때리도록 하는 동작에서 유래했다.

OS/8, RT-11, RSX-11, RSTS, TOPS-10 등 DEC 운영 체제는 콘솔 장치(원래 텔레타이프 기계)가 작동하도록 두 문자(CR, LF)를 모두 사용하여 줄의 끝을 표시했다. 이 관례는 "유리 TTY"(이후 CRT 또는 "덤 터미널")가 등장했을 때에도 하위 호환성을 위해 계속 유지되었다. 게리 킬달CP/M은 DEC의 RT-11 운영 체제에서 사용된 명령줄 인터페이스 관례에서 영감을 받아 이 방식을 채택했다.

IBM의 PC DOS (MS-DOS)는 CP/M을 느슨하게 기반으로 만들어 졌기 때문에 CR-LF의 줄끝 관례를 물려받았고,[39] Windows는 MS-DOS에서 다시 이 관례를 물려받았다.

줄 끝을 두 문자로 표시하면 각 문자가 단독으로 나타날 때 해석에 불필요한 복잡성과 모호성이 발생한다. Multics는 이를 단순화하기 위해 일반 텍스트 데이터 스트림(파일 포함)에 라인 피드(LF)만 줄 종결자로 사용했다.[40] TTY 드라이버는 LF를 CRLF로 변환하여 출력을 처리했고, 유닉스유닉스 계열 시스템, Amiga 시스템은 Multics의 관례를 채택했다. 반면, 원래 Macintosh OS, Apple DOS, ProDOS는 캐리지 리턴(CR)만 줄 종결자로 사용했다. 그러나 애플은 나중에 구형 운영 체제를 유닉스 기반 macOS(구 OS X) 운영 체제로 대체하면서 라인 피드(LF)를 사용한다. TRS-80도 줄을 종결하기 위해 단독 CR을 사용했다.

ARPANET에 연결된 컴퓨터들은 운영체제에 따라 CR-LF, LF 등 서로 다른 줄 끝 관례를 사용했다. Telnet 프로토콜은 ASCII "네트워크 가상 터미널(NVT)"을 정의하여 서로 다른 줄 끝 관례를 가진 호스트 간의 통신을 지원했다. Telnet은 CR-LF 줄 끝과 함께 ASCII를 사용했고, 다른 관례를 사용하는 소프트웨어는 로컬 관례와 NVT 간에 변환을 수행했다.[41] 파일 전송 프로토콜은 Telnet 프로토콜을 채택하여 네트워크 가상 터미널 사용을 포함했다.[42][43] 이러한 방식은 NVT의 CR-LF 줄 끝 관례를 사용하지 않는 시스템에서 프로토콜 구현 및 전자 메일, 월드 와이드 웹과 같은 다른 네트워크 프로토콜에 복잡성을 추가했다.[44][45]

4. 1. 5. End of file/stream

PDP-6 모니터[35]와 그 후속 기종인 PDP-10 TOPS-10[36]은 제어-Z (SUB)를 터미널에서 입력의 파일 종료 표시로 사용했다. CP/M과 같은 일부 운영 체제는 파일 길이를 디스크 블록 단위로만 추적했으며, 제어-Z를 사용하여 파일의 실제 텍스트 종료를 표시했다.[46] 이러한 이유로, EOF, 즉 파일 종료는 SUBstitute 대신 제어-Z의 세 글자 약어로 구어체 및 관례적으로 사용되었다. 텍스트 종료 문자(ETX), 즉 제어-C는 여러 가지 이유로 부적절했고, 제어-Z를 파일 종료 제어 문자로 사용하는 것은 알파벳의 마지막에 있는 문자 Z의 위치와 유사하며, 매우 편리한 기억 보조 장치 역할을 한다. 역사적으로 일반적이었고 지금도 널리 사용되는 관례는 ETX 문자 관례를 사용하여 일반적으로 키보드에서 오는 입력 데이터 스트림을 통해 프로그램을 중단하고 중지하는 것이다.

유닉스 터미널 드라이버는 EOT, 즉 제어-D를 사용하여 데이터 스트림의 종료를 나타낸다.

4. 2. 출력 가능 문자

ASCII 32는 공백 문자이다. 키보드의 스페이스 키로 입력할 수 있으며, 단어와 단어 사이에 공백을 표시한다.

ASCII 33–126은 인쇄 가능한 문자이며, 반각 영숫자, 구두점 및 기호를 나타낸다. 젊은 순서대로 느낌표따옴표…가 이어지며, 라틴 문자 대문자 앞에 0숫자와 대부분의 반각 구두점, 대문자와 소문자 사이, 라틴 문자 소문자 뒤에도 몇 종류의 반각 구두점이 할당되어 있다.

아래에서는 ASCII 코드의 출력 가능한 문자들을 나타낸다.

이진법십진법모양85진법 (아스키 85)
01000003220
01000013321!0
01000103422"1
01000113523#2
01001003624$3
01001013725%4
01001103826&5
01001113927'6
01010004028(7
01010014129)8
0101010422A*9
0101011432B+10
0101100442C,11
0101101452D-12
0101110462E.13
0101111472F/14
01100004830015
01100014931116
01100105032217
01100115133318
01101005234419
01101015335520
01101105436621
01101115537722
01110005638823
01110015739924
0111010583A:25
0111011593B;26
0111100603C<27
0111101613D=28
0111110623E>29
0111111633F?30



모양
1000000@
1000001A
1000010B
1000011C
1000100D
1000101E
1000110F
1000111G
1001000H
1001001I
1001010J
1001011K
1001100L
1001101M
1001110N
1001111O
1010000P
1010001Q
1010010R
1010011S
1010100T
1010101U
1010110V
1010111W
1011000X
1011001Y
1011010Z
1011011



|-

|1111110 ||style="background:lightblue;"| 176 ||style="background:#CCFFFF;"| 126 ||style="background:lightblue;"| 7E || ~

|}

4. 2. 1. 출력 가능 아스키 문자표

wikitable

11000001409660`
11000011419761a
11000101429862b
11000111439963c
110010014410064d
110010114510165e
110011014610266f
110011114710367g
110100015010468h
110100115110569i
11010101521066Aj
11010111531076Bk
11011001541086Cl
11011011551096Dm
11011101561106En
11011111571116Fo
111000016011270p
111000116111371q
111001016211472r
111001116311573s
111010016411674t
111010116511775u
111011016611876v
111011116711977w
111100017012078x
111100117112179y
11110101721227Az
11110111731237B{
10010111741247C|
11111011751257D}
이진법십진법모양85진법 (아스키 85)
01000003220
01000013321!0
01000103422"1
01000113523#2
01001003624$3
01001013725%4
01001103826&5
01001113927'6
01010004028(7
01010014129)8
0101010422A*9
0101011432B+10
0101100442C,11
0101101452D-12
0101110462E.13
0101111472F/14
01100004830015
01100014931116
01100025032217
01100115133318
01101005234419
01101015335520
01101105436621
01101115537722
01110005638823
01110015739924
0111010583A:25
0111011593B;26
0111100603C<27
0111101613D=28
0111110623E>29
0111111633F?30



모양
1000000@
1000001A
1000010B
1000011C
1000100D
1000101E
1000110F
1000111G
1001000H
1001001I
1001010J
1001011K
1001100L
1001101M
1001110N
1001111O
1010000P
1010001Q
1010010R
1010011S
1010100T
1010101U
1010110V
1010111W
1011000X
1011001Y
1011010Z
1011011



|-

|1111110 ||style="background:lightblue;"| 176 ||style="background:#CCFFFF;"| 126 ||style="background:lightblue;"| 7E || ~

|}

5. 사용

ASCII는 1963년 AT&T의 TWX(TeletypeWriter eXchange) 네트워크를 위한 7비트 전신 타자기 코드로 처음 상업적으로 사용되었다.[5] TWX는 원래 이전의 5비트 ITA2를 사용했으며, 이는 경쟁 Telex 전신 타자기 시스템에서도 사용되었다. 밥 베머는 이스케이프 시퀀스와 같은 기능을 도입했다.[5] 휴 맥그리거 로스는 이 작업을 대중화하는 데 도움을 주었고, ASCII가 유럽에서 '베머-로스 코드'라고 불리기도 했다.[48] 베머는 ASCII에 대한 광범위한 작업으로 "ASCII의 아버지"라고 불렸다.[49]

1968년 3월 11일, 미국 대통령 린든 B. 존슨미국 연방 정부가 구매한 모든 컴퓨터가 ASCII를 지원하도록 의무화했다.[50][51][52] 1969년 7월 1일 이후 연방 정부 재고에 도입된 모든 컴퓨터 및 관련 장비는 정보 교환 표준 코드와 자기 테이프 및 종이 테이프 표준에서 규정하는 형식을 사용할 수 있는 기능을 갖춰야 했다.

ASCII는 월드 와이드 웹에서 2007년 12월까지 가장 일반적인 문자 인코딩이었으며, UTF-8 인코딩이 이를 능가했다. UTF-8은 ASCII와 하위 호환된다.[53][54][55]

6. 파생 규격

ASCII는 ISO 표준 7 비트 문자 코드 ISO/IEC 646의 기반이 되었다. 하지만 7비트로는 영어 이외의 언어를 지원하기에 불충분하여, 이후 다른 유럽 언어에서 사용되는 라틴 문자에 대한 지원을 추가한 8비트 문자 코드인 ISO/IEC 8859가 제정되었다. 그 후, 전 세계에서 사용되는 다양한 문자를 표현할 수 있도록 ASCII에서 사용되지 않는 128번 이후 부분에 다른 문자를 할당하거나, 여러 바이트를 사용하여 하나의 문자를 표현하는 방식으로 독자적으로 확장된 문자 인코딩이 사용되기 시작했다.

ASCII 제정 당시, 최소 데이터 처리 단위 ( 메모리 어드레싱의 최소 단위) 즉, 바이트가 6비트인 컴퓨터도 많았다 ( DEC의 PDP 시리즈 등). 이러한 컴퓨터에서는 6비트 문자 인코딩 방식을 채택했으며, 그 때문에 ISO/IEC 646의 제정 당시에는 7비트 인코딩 안 외에 6비트 인코딩 안도 있었다. 나중에 1바이트를 8비트로 간주하는, 즉 옥텟을 채택하는 컴퓨터가 인기를 얻어 주류가 되었다[65]

ASCII에서 파생된 독자 확장 문자 인코딩 방식은 1바이트 코드 및 여러 바이트 코드를 포함하여 다수 존재하지만, 각 방식 간의 호환성은 거의 없고, 국제적인 데이터 교환성에 문제가 있었다. 따라서, 세계의 문자를 단일 코드 체계 하에 수록하는 국제적인 문자 코드 표준으로, ISO/IEC 10646 및 유니코드의 제정이 추진되었다[66]

6. 1. 유니코드

유니코드와 ISO/IEC 10646 범용 문자 집합(UCS)은 ASCII보다 훨씬 더 광범위한 문자 배열을 가지고 있으며, 다양한 인코딩 형태가 많은 환경에서 ISO/IEC 8859와 ASCII를 빠르게 대체하기 시작했다.[61] ASCII는 유니코드 문자 집합에 처음 128개 기호로 통합되었으므로, 7비트 ASCII 문자는 두 집합에서 동일한 숫자 코드를 갖는다.[61] 이를 통해 UTF-8은 7비트 ASCII와 하위 호환성을 가질 수 있는데, ASCII 문자만 포함하는 UTF-8 파일은 동일한 문자 시퀀스를 포함하는 ASCII 파일과 동일하기 때문이다.[61]

ASCII 제정 당시, 1바이트가 6비트인 컴퓨터도 많았지만, 나중에 1바이트를 8비트로 간주하는 옥텟을 채택하는 컴퓨터가 주류가 되었다.[65] 옥텟을 채택한 컴퓨터에서 ASCII를 사용하는 경우, 1비트가 남으므로, 그 8번째 비트는 통신에서의 오류 검사용 패리티 비트로 사용되었다.[64]

ASCII에서 파생된 독자 확장 문자 인코딩 방식은 1바이트 코드 및 여러 바이트 코드를 포함하여 다수 존재하지만, 각 방식 간의 호환성은 거의 없었다. 따라서, 세계의 문자를 단일 코드 체계 하에 수록하는 국제적인 문자 코드 표준으로, ISO/IEC 10646 및 유니코드의 제정이 추진되었다.[66] 유니코드 방식으로 인코딩된 문자 데이터 중, 0번부터 127번까지는 ASCII를 기반으로 하고 있어 호환성이 있다. 특히 8비트 단위로 인코딩하는 UTF-8은 128번 이후의 문자를 사용하지 않는 데이터의 경우 ASCII와 동일한 바이트열이 된다.[67] HTML5에서는 UTF-8 사용을 권장하고 있으며,[69] 후속 HTML Living Standard에서도 기본적으로 UTF-8을 사용하는 것을 예상하고 있다.[70]

7. 한계 및 문제점

ASCII는 미국 표준이므로, 라틴 문자를 사용하는 언어라도 영어를 제외한 다른 언어를 표기하기에는 불충분하다.[71] 초기에는 서컴플렉스, 틸다 등의 분음 부호를 전동 타자기로 겹쳐 찍는 방식이 상정되었으나,[71] 백스페이스를 입력해야 하고 비디오 표시 단말기에서는 불가능하여 보급되지 않았다.

호환되지 않는 변종이 각국에서 출현하여 ISO/IEC 646에서는 대체 가능한 문자를 정의하여 대응을 시도했지만, 프로그래밍 언어나 서로 다른 문자 집합 사이에서는 문자 깨짐이 발생했다. 예를 들어 일본어에서는 JIS X 0201에 의해 백슬래시가 엔화 기호로 깨지는 현상이 있다.

1970년대 이후, 8비트가 컴퓨터에서 주류 바이트 크기가 되면서, 추가 1비트 영역을 이용한 확장 ASCII가 언어·기종별로 난립했다. ISO/IEC 8859에서는 이러한 추가 영역을 표준화하여, ISO/IEC 8859-1스페인어, 포르투갈어, 프랑스어, 독일어 등에서 사용되는 대부분의 라틴 문자가 통합되었다.

ISO/IEC 2022에서는 일본어 (ISO-2022-JP)를 포함한 여러 문자 집합을 부호표 전환 방식으로 통일했지만, 제어가 복잡하다는 단점이 있었다. 이러한 문제를 해결하기 위해 2023년 현재에는 모든 문자를 통일된 부호로 처리할 수 있는 유니코드가 널리 사용된다.

참조

[1] 표준 ASCII Graphic character set 1975-12-01
[2] 서적 Coded Character Sets, History and Development https://textfiles.me[...] Addison-Wesley Publishing Company, Inc. 2019-08-25
[3] 웹사이트 Character Sets https://www.iana.org[...] 2019-08-25
[4] 웹사이트 Milestone-Proposal:ASCII MIlestone - IEEE NJ Coast Section https://ieeemileston[...] 2024-02-26
[5] 뉴스 1963: The Debut of ASCII http://edition.cnn.c[...] CNN 2008-04-14
[6] 웹사이트 American Standard Code for Information Interchange, ASA X3.4-1963 https://www.sr-ix.co[...] American Standards Association 2020-06-06
[7] 기술 보고서 USA Standard Code for Information Interchange, USAS X3.4-1967 United States of America Standards Institute 1967-07-07
[8] 웹사이트 An annotated history of some character codes or ASCII: American Standard Code for Information Infiltration https://www.sr-ix.co[...] 2020-03-08
[9] 기술 보고서 American National Standard for Information Systems — Coded Character Sets — 7-Bit American National Standard Code for Information Interchange (7-Bit ASCII), ANSI X3.4-1986 American National Standards Institute (ANSI) 1986-03-26
[10] IETF ASCII format for Network Interchange Network Working Group 2016-06-13
[11] 웹사이트 Correct classification of RFC 20 (ASCII format) to Internet Standard https://datatracker.[...] IETF 2015-01-12
[12] IETF Internet Security Glossary, Version 2 2016-06-13
[13] 서적 Digital Electronics: Principles, Devices and Applications https://books.google[...] John Wiley and Sons 2007
[14] 저널 Binary Computer Codes and ASCII http://www.swtpc.com[...] 2016-05-22
[15] 보고서 Brief Report: Meeting of CCITT Working Party on the New Telegraph Alphabet, May 13–15, 1963.
[16] 보고서 Report of ISO/TC/97/SC 2 – Meeting of October 29–31, 1963.
[17] 보고서 Report on Task Group X3.2.4, June 11, 1963, Pentagon Building, Washington, DC.
[18] 보고서 Report of Meeting No. 8, Task Group X3.2.4, December 17 and 18, 1963
[19] 웹사이트 US and International standards: ASCII http://homepages.cwi[...] 2010
[20] 기술 보고서 USA Standard Code for Information Interchange, USAS X3.4-1968 https://archive.org/[...] United States of America Standards Institute 1968-10-10
[21] 웹사이트 7-bit character sets: Revisions of ASCII http://www.aivosto.c[...] Aivosto Oy 2016-06-13
[22] special edition Information 1966-09
[23] 서적 Unicode Explained – Internationalize Documents, Programs, and Web Sites O'Reilly Media, Inc. 2014-03-14
[24] 문서 ANSI INCITS 4-1986 (R2007): American National Standard for Information Systems – Coded Character Sets – 7-Bit American National Standard Code for Information Interchange (7-Bit ASCII) 2007
[25] 웹사이트 INCITS 4-1986 (R2022) https://webstore.ans[...]
[26] 문서 Bit Sequencing of the American National Standard Code for Information Interchange in Serial-by-Bit Data Transmission American National Standards Institute (ANSI) 1966
[27] 웹사이트 Telegraph Regulations and Final Protocol (Madrid, 1932) http://handle.itu.in[...] 2024-06-09
[28] 웹사이트 Teletype Communication Codes http://www.baudot.ne[...] Baudot.net 2008-07-11
[29] 서적 A TeX Primer for Scientists https://books.google[...] CRC Press 2016-10-29
[30] 웹사이트 Computer Keyboards http://www.quadibloc[...] 2014-08-24
[31] 잡지 ASCIIbetical definition https://www.pcmag.co[...] 2008-04-14
[32] IETF Internet Message Format 2016-06-13
[33] 웹사이트 Understanding ASCII Codes http://www.nadcomm.c[...] 2014-05-11
[34] 메일링 리스트 Re: editor and word processor history (was: Re: RTF for emacs) http://lists.gnu.org[...] 2014-07-11
[35] 웹사이트 PDP-6 Multiprogramming System Manual http://bitsavers.tra[...] Digital Equipment Corporation (DEC) 2014-07-10
[36] 웹사이트 PDP-10 Reference Handbook, Book 3, Communicating with the Monitor http://bitsavers.org[...] Digital Equipment Corporation (DEC) 1969
[37] 웹사이트 Help - GNU Emacs Manual https://www.gnu.org/[...]
[38] 웹사이트 ANSI X3.64-1979 https://nvlpubs.nist[...]
[39] 웹사이트 Is DOS a Rip-Off of CP/M? http://dosmandrivel.[...] 2007-08-08
[40] 학술대회 Technical and human engineering problems in connecting terminals to a time-sharing system http://www.multician[...] AFIPS Press 1970-11-17
[41] IETF TELNET Protocol Internet Engineering Task Force (IETF) 1971-05-19
[42] IETF File Transfer Protocol Internet Engineering Task Force (IETF) 1973-08-12
[43] IETF File Transfer Protocol Internet Engineering Task Force (IETF) 1980-06
[44] 웹사이트 EOL translation plan for Mercurial https://www.mercuria[...] Mercurial
[45] 웹사이트 Bare LFs in SMTP http://cr.yp.to/docs[...]
[46] 서적 CP/M 1.4 Interface Guide http://www.bitsavers[...] Digital Research 1978
[47] 웹사이트 First-Hand: Chad is Our Most Important Product: An Engineer's Memory of Teletype Corporation https://ethw.org/Fir[...] Engineering and Technology History Wiki (ETHW) 2015-01-13
[48] 웹사이트 Bemer meets Europe (Computer Standards) – Computer History Vignettes http://www.trailing-[...] Trailing-edge.com
[49] 웹사이트 Robert William Bemer: Biography http://www.thocp.net[...] 2013-03-09
[50] 웹사이트 Memorandum Approving the Adoption by the Federal Government of a Standard Code for Information Interchange http://www.presidenc[...] The American Presidency Project 1968-03-11
[51] 뉴스그룹 Re: Early history of ASCII? https://groups.googl[...] 1996-12-20
[52] 서적 Compilation of Data Communications Standards McGraw-Hill Inc. 1982-02-01
[53] 웹사이트 UTF-8 Growth on the Web http://www.w3.org/QA[...] World Wide Web Consortium 2008-05-06
[54] 웹사이트 Moving to Unicode 5.1 http://googleblog.bl[...] 2008-05-05
[55] 웹사이트 Unicode nearing 50% of the web http://googleblog.bl[...] 2010-01-28
[56] 문서 Specific Criteria
[57] 인용 ISO/TC 97 – Computers and Information Processing: Acceptance of Draft ISO Recommendation No. 1052 1967-12-22
[58] 웹사이트 DVB-TXT (Teletext) Specification for conveying ITU-R System B Teletext in DVB bitstreams https://dvb.org/?sta[...]
[59] 서적 Technical Reference http://www.bitsavers[...] IBM 1981-08
[60] 서적 The Unicode standard, Version 5.0 Addison-Wesley Professional 2006-10-27
[61] 웹사이트 utf-8(7) – Linux manual page http://man7.org/linu[...] Man7.org 2014-02-26
[62] 웹사이트 情報交換用米国標準コード https://www.ibm.com/[...] 2014-02-20
[63] 웹사이트 Character Sets https://www.iana.org[...] Internet Assigned Numbers Authority (IANA) 2022-07-14
[64] 웹사이트 ASCII(アスキー / US-ASCII)とは - 意味をわかりやすく - IT用語辞典 e-Words https://e-words.jp/w[...]
[65] 웹사이트 「オクテット」と「バイト」は何が違う? | 日経クロステック(xTECH) https://xtech.nikkei[...]
[66] 웹사이트 Unicode(ユニコード)とは - 意味をわかりやすく - IT用語辞典 e-Words https://e-words.jp/w[...]
[67] 웹사이트 UTF-8とは - 意味をわかりやすく - IT用語辞典 e-Words https://e-words.jp/w[...]
[68] 웹사이트 Webサイトの文字コーディング、90%がUTF-8利用 - Shift JISは0.9% | TECH+(テックプラス) https://news.mynavi.[...]
[69] 웹사이트 HTMLで文字エンコーディングを指定する https://www.w3.org/I[...]
[70] 웹사이트 HTML Standard - §4.2.5.4 Specifying the document's character encoding https://html.spec.wh[...]
[71] 웹사이트 Character histories: notes on some ASCII code positions https://jkorpela.fi/[...]
[72] 인용 ISO-IR-006: ASCII Graphic character set https://www.itscj.ip[...] ITSCJ/IPSJ 1975-12-01
[73] 뉴스 1963: The Debut of ASCII http://edition.cnn.c[...] CNN 1999-07-06
[74] 간행물 American Standard Code for Information Interchange, ASA X3.4-1963 미국 표준 협회 (ASA) 1963-06-17
[75] 간행물 Standard Code for Information Interchange, USAS X3.4-1967 미합중국 표준 협회 (USASI) 1967-07-07
[76] 웹사이트 An annotated history of some character codes or ASCII: American Standard Code for Information Infiltration https://web.archive.[...] World Power Systems (WPS) 2016-04-20
[77] 간행물 American National Standard for Information Systems — Coded Character Sets — 7-Bit American National Standard Code for Information Interchange (7-Bit ASCII), ANSI X3.4-1986 미국 국가표준 협회 (ANSI) 1986-03-26



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com

11000001409660`
11000011419761a
11000101429862b
11000111439963c
110010014410064d
110010114510165e
110011014610266f
110011114710367g
110100015010468h
110100115110569i
11010101521066Aj
11010111531076Bk
11011001541086Cl
11011011551096Dm
11011101561106En
11011111571116Fo
111000016011270p
111000116111371q
111001016211472r
111001116311573s
111010016411674t
111010116511775u
111011016611876v
111011116711977w
111100017012078x
111100117112179y
11110101721227Az
11110111731237B{
10010111741247C|
11111011751257D}