아스키 코드

(ASCII에서 넘어옴)

ASKY를 찾아오신 분은 안 생겨요 항목으로 ASKY는 안생겨요로 리다이렉트된다.

715px
[1]

ASCII (American Standard Code for Information Interchange, 미국 정보 교환 표준 부호)
아스키 코드[2]

1 개요

아스키 코드는 미국에서 표준화한 정보교환용 7비트 부호체계이다. 000(0x00)부터 127(0x7F)까지 총 128개의 부호가 사용된다. 이는 영문 키보드로 입력할 수 있는 모든 기호들이 할당되어 있는 부호 체계이며, 매우 단순하고 간단하기 때문에 어느 시스템에서도 적용가능하다는 장점이 있으나, 2바이트 이상의 코드를 표현할 수 없기 때문에 국제표준의 위상은 유니코드에게 넘어갔다. text only 형태의 게시판에서는 아스키 아트(AA)라는 이름으로 자주 사용된다. 근데 2ch 등지에서 사용되는 아스키 아트는 히라가나가타카나를 사용하므로 엄밀히 말해 아스키 아트가 아닌 유니코드 아트…

영화 마션에서 아스키 코드를 통해 지구와 통신을 하는 부분이 나왔다.

1바이트를 구성하는 8비트 중에서 7비트만 쓰도록 제정된 이유는, 나머지 1비트를 통신 에러 검출을 위해 사용하기 때문이었다. Parity Bit라고 해서, 7개의 비트 중 1의 갯수가 홀수면 1, 짝수면 0으로 하는 식의 패리티 비트를 붙여서, 전송 도중 신호가 변질된 것을 수신측에서 검출해낼 확률을 높인 것. 원시적인 CRC 체크섬이라고 할 수 있지만 당연히 이런 체크에 검출되지 않는 신호 에러도 얼마든지 생길 수 있고 현재는 더 이상 쓰이지 않는다. 현재는 8비트 문자 인코딩에서는 그냥 맨 앞 비트에 0을 붙이고 이어서 7비트가 이어지는 식의 인코딩이 일반적이다.

헤비메탈로 표현하면 이렇게 된다

2 목록

아래 표는 아스키 코드 중 제어 문자와 확장 아스키 코드를 제외한 부호(영문 자판에 사용되는 부호)를 정리한 것이다.[3]

10진수부호10진수부호10진수부호10진수부호
0320568080P104h
033!0579081Q105i
034"058:082R106j
035#059;083S107k
036$060084T108l
037%061=085U109m
038&062>086V110n
039'063?087W111o
040(064@088X112p
041)065A089Y113q
042*066B090Z114r
043+067C091[115s
044,068D092\\116t
045-069E093]117u
046.070F094^118v
047/071G095_119w
0480072H096`120x
0491073I097a121y
0502074J098b122z
0513075K099c123{
0524076L100d124|
0535077M101e125}
0546078N102f126~
0557079O103g
  • 흔히 이 목록에 있는 문자들을 영숫자라 부른다. 좁은 의미로는 숫자 10개(0~9, 0x30 ~ 0x39), 대문자 26개(A~Z, 0x41 ~ 0x5A), 소문자 26개(a~z, 0x61 ~ 0x7A) 해서 총 62개의 문자를 영숫자라 부르고, 넓은 의미로는 이 목록의 문자들을 모두 포괄한다.
  • 한편, 92번은 EUC-KR에서는 ₩, Shift-JIS에서는 ¥로 표시된다. 자세한 사항은 \\ 항목 참조.

2.1 특수문자화된 제어 문자

IBM CP437 아스키 코드에는 제어 문자 자리에 Null(0x00)을 제외한 32개의 특수문자를 배당해 놓았다. 물론 그렇다고 해서 제어 문자의 기능이 없어지는 것은 아니다. 아래 표에서는 같은 모양의 유니코드 문자들로 대체하였다.

0123456789ABCDEF
0xNUL
1x§
7x

한국어 아스키 코드(CP949)에서는 위의 문자들 중 몇 개가 괘선 문자로 대체되어 있다.

0123456789ABCDEF
0xNUL
1x

3 언어 표기용으로

흔히 위 아스키 문자들만으로 영어를 충분히 나타낼 수 있다고 주장하는 사람들이 있는데, 영어도 제대로 쓰려면 아스키 문자만으로는 부족하다.

  • 영어도 외래어 표기 시에는 글자 위아래에 diacritic을 붙인다. (예: résumé, façade, piña colada. 특히 résumé는 resume과 뜻과 발음이 전혀 다르다.)
  • 출판물에서는 여닫는 따옴표(“” ‘’)와 en dash(–), em dash(—) 등을 사용한다. (예: He said, “I said ‘Hi!’ to you!”—but I never heard him.)

위의 문제 때문에 나온 것이 8비트로 확장한 아스키 코드이다. 128(0x80)~255(0xFF) 영역에 diacritic을 붙인 문자와 그리스 문자, 수학 기호, 괘선 문자 등을 포함하고 있다. 그러나 이걸로도 여닫는 따옴표나 dash는 해결이 안 되어서, en dash는 HYPHEN-MINUS(-)로, em dash는 수평 괘선문자(─)로 대체해야 했다. 이 확장된 코드를 ANSI 코드라 부르기도 한다.

이 확장 영역은 국가마다 달랐는데, 표음 문자를 쓰는 국가 중 128자 이내에서 자국의 문자를 넣을 수 있는 국가가 이 확장 영역을 많이 사용했다(특히 ISO/IEC 8859 시리즈). 주로 알파벳 기반의 문자를 사용하는 국가가 이렇게 사용했지만, 아랍어태국어, 히브리어에서 사용하는 문자도 글자 수가 128자 내에서 해결이 가능했기에 이 영역을 사용했다. 8비트 초기 시절 일본의 PC에서는 이 영역에 카타카나를 넣어서 사용하기도 했다.[4][5]한국어, 일본어, 중국어처럼 문자가 굉장히 많은 경우, 확장 영역에 해당하는 바이트를 두 개 붙여 놓으면 한 글자로 표시되는 방식을 사용했다. 그래서 한국어 환경에선 확장 영역에 있는 괘선 문자를 쓰기가 골룸했던 까닭에 저 앞의 섹션에 나온 것처럼 제어 문자 영역에 있는 특수문자 중 일부분에 괘선 문자를 때려박았다. 한글 바이오스 모드가 비활성화됐을 때 텍스트 모드에서 돌아가는 한글 프로그램을 돌리면 괘선 문자가 들어갈 자리에 웃는 얼굴 그림과 ♥♦♣♠ 등이 나오는 것을 볼 수 있었다.

사실 유니코드의 첫 256글자(U+0000 ~ U+00FF)는 확장 ASCII 코드 중 하나인 ISO/IEC 8859-1을 그대로 차용한 것이다. 이 때문에 이 부분을 8비트로 표현하는 UTF-8 인코딩은 ASCII 코드와 완벽히 호환이 된다. 웹에서 UTF-8이 대세가 된 가장 큰 원인이다.

베트남어 표기용으로 VISCII라는 확장 ASCII 코드가 있는데, 구조가 조금 특이하다. 베트남어는 글자 위아래에 diacritic을 요란하게(?) 붙이는데, 베트남어를 온전히 표기하기 위해서는 ASCII에 추가로 134글자가 더 필요하다. 그래서 베트남어용 확장 ASCII 코드를 만들 때 128(0x80)~255(0xFF) 영역은 모두 베트남어에서 쓰이는 글자들로 채우고, ASCII에서 사용 빈도가 낮을 만한 제어 문자 여섯 개(STX, ENQ, ACK, DC4, EM, RS)를 베트남어에서 사용 빈도가 낮은 대문자들(Ẳ, Ẵ, Ẫ, Ỷ, Ỹ, Ỵ)로 바꿔서 134글자를 모두 집어넣었다. 다만 128(0x80)~255(0xFF) 영역을 모두 베트남어 글자들로만 채우다 보니, 기호가 들어갈 자리가 사라져 버렸다.

구체적으로는 이런 구조이다.

0123456789ABCDEF
0xNULSOHETXEOTBELBSHTLFVTFFCRSOSI
1xDLEDC1DC2DC3NAKSYNETBCANSUBESCFSGSUS
2x!"#$%&'()*+,-./
3x0123456789:;=>?
4x@ABCDEFGHIJKLMNO
5xPQRSTUVWXYZ[\\]^_
6x`abcdefghijklmno
7xpqrstuvwxyz{|}~DEL
8x
9xŨ
AxÕế
BxƠơƯ
CxÀÁÂÃĂÈÉÊÌÍĨ
DxĐÒÓÔÙÚÝư
Exàáâãăèéêìíĩ
Fxđòóôõùúũý
  1. 2열 이후의 코드들은 위키에서 사용할 수 없는 특수 문자 항목의 링크를 걸 때 사용하는 코드들이니 숙지할 것. 기호가 들어갈 곳에 코드를 넣어 주면 된다. (URL escape code는 아스키 문자의 hex(16진수)값을 이용한다. 항목 참조)
  2. 사실 '아스키' 라는 축약어에 '코드'가 이미 포함되어 있으므로 엄밀히 말해서 '아스키 코드'는 역전 앞과 같은 유형의 표현이지만 이를 진지하게 따지고 드는 사람은 없다.
  3. 032는 공백 한칸
  4. 그래서 8비트 초기 시절에는 한자나 히라가나 없이 올 카타카나로만 이루어진 문장을 일본에서 만들어진 BASIC 언어 교본 등에서 볼 수 있었다. 여기에 착안해 오늘날 한국어를 한글전용으로 쓰는 것과 비슷하게 한자를 폐기하고 가나로만 문자사용을 하자는 운동도 있었다.
  5. 한글 또한 모아쓰기를 하지 말고 풀어쓰기로 하자는 움직임 또한 이 시절이 있긴 헀다. 풀어쓰기를 하면 128자 안에서 해결되기 때문. 물론 큰 반향은 없었다.