Gidhub BE Developer

아스키 코드(ASCII Code)

2018-10-07
goodGid

아스키 코드란?

  • ASCII(American Standard Code for Information Interchange, 미국 정보 교환 표준 부호)의 줄임말이다.

  • 아스키 코드는 미국 ANSI에서 표준화한 정보교환용 7비트 부호체계이다.

  • 000(0x00)부터 127(0x7F)까지 총 128개의 부호가 사용된다.

  • 이는 영문 키보드로 입력할 수 있는 모든 기호들이 할당되어 있는 부호 체계이며,
    매우 단순하고 간단하기 때문에 어느 시스템에서도 적용가능하다는 장점이 있으나,
    2바이트 이상의 코드를 표현할 수 없기 때문에 국제표준의 위상유니코드에게 넘어갔다.

  • 1바이트를 구성하는 8비트 중에서 7비트만 쓰도록 제정된 이유는
    나머지 1비트통신 에러 검출을 위해 사용하기 때문이었다.

  • Parity Bit라고 해서 7개의 비트 중 1의 갯수가 홀수면 1, 짝수면 0으로 하는 식의 패리티 비트를 붙여서 전송 도중 신호가 변질된 것을 수신측에서 검출해낼 확률을 높인 것이다.

  • 원시적인 CRC 체크섬이라고 할 수 있지만 당연히 이런 체크에 검출되지 않는 신호 에러도 얼마든지 생길 수 있고 현재는 더 이상 쓰이지 않는다.

  • 현재는 8비트 문자 인코딩에서는 그냥 맨 앞 비트에 0을 붙이고 이어서 7비트가 이어지는 식의 인코딩이 일반적이다.


유니코드와 호환성

  • UTF-8의 경우 ASCII 영역그대로 1바이트를 사용하기 때문에 호환이 된다.

  • 반대로 말하자면 UTF-8 문서라도 ASCII 영역에 해당하는 문자만 적혀 있고 Byte Order Mark(BOM)까지 없다면 그냥 ASCII 문서와 다를 게 없다.

  • 하지만 UTF-162바이트에서 시작하기 때문에 서로 호환이 되지 않는다.

  • 이 때문에 UTF-16에서 ASCII 문자를 나타낼 때는 앞에 0x00이 붙는다.

  • 예를 들어 A라는 글자를 표현하려면
    ASCII or UTF-8에서는 0x41이라고만 표현하면 되지만 UTF-16에서는 0x0041로 표현해야 한다.

  • 이를 무시하고 1바이트로만 표현하면 앞뒤의 바이트가 묶여서 전혀 다른 문자가 튀어나온다.

  • 반대로 UTF-16으로 작성된 문서를 ASCII로 읽으면
    ASCII 영역의 문자열들이 한글자 한글자 띄어쓰기를 해놓은 것처럼 띄엄띄엄 표시되는 것을 알 수 있는데
    이 역시 앞뒤에 붙은 0x00이 따로 해석돼서 발생하는 현상이다.


참고


Similar Posts

Comments