본문 바로가기
IT

ASCII Code, Unicode, encode, decode (2편)

by Redking

표현 방식

 

UTF-8은 위 규칙에 따라서 유니코드 문자를 인코딩 합니다.

 

1바이트 : ASCII코드

문자가 ASCII 코드인 경우에는 ASCII와 동일하게 1바이트로 표현을 합니다.

 

2바이트 : 아랍, 히브리, 대부분의 유럽계(조지안 문자 제외)

UTF-8에서는 U+0080 ~ U+07FF 사이의 아랍, 히브리, 유럽계 문자들을 2바이트로 표현합니다.

여기서 앞의 바이트 앞에 110을 붙이고, 따라오는 바이트의 앞에는 10을 붙이는 규칙을 적용합니다.

 

3바이트 : 기본 다국어 평면(BMP)

ASCII와 아랍, 히브리, 유럽계 문자들을 제외한 BMP 문자들은 모두 3바이트로 표현합니다.

3바이트로 표현하는 규칙을 2바이트와 유사하게 적용됩니다.

첫 바이트 앞에는 1110을 붙이고, 나머지 두 바이트 앞에는 10을 붙이고, 문자 비트들을 그 뒤에 적용시키게 됩니다.

 

4바이트 : 모든 유니코드 문자

0번 평면인 기본 다국어 평면을 제외한 모든 문자들은 4바이트로 표현합니다.

4바이트로 표현하는 규칙도 앞의 규칙들과 유사합니다.

4바이트중 첫 번째 바이트 앞에 11110을 붙이고, 나머지 바이트 앞에는 10을 붙인 뒤 나머지 문자에 해당하는 비트를 집어넣습니다.

 

총 4구역으로 숫자를 쪼개야 합니다.

  1. 첫 번째 바이트의 4번째 비트부터 3비트
  2. 첫 번째 바이트의 뒤의 2비트와 2번째 바이트의 앞의 4비트
  3. 두 번째 바이트 뒤의 4비트와 세번째 바이트 앞의 2비트
  4. 세 번째 바이트 뒤의 6비트

쪼갠 숫자를 UTF-8의 규칙에 맞게 각각 아래와 같이 적용시킵니다.

 

UTF-8에서의 앞의 비트를 이용한 문자 종류 찾기

UTF-8의 적용되는 규칙을 이용해서 이 문자가 어떤 문자인지 유추해낼 수 있습니다.

  1. 어떤 바이트가 0으로 시작하면 그 바이트는 ASCII 코드입니다.
  2. 어떤 바이트가 110으로 시작하면, 거기서부터 2바이트가 한 글자입니다.
  3. 어떤 바이트가 1110으로 시작하면, 거기서부터 3바이트가 한 글자입니다.
  4. 어떤 바이트가 11110으로 시작하면, 거기서부터 4바이트가 한 글자입니다.

위와 같은 규칙으로 문자를 유추해낼 수 있습니다.

encode & decode

위에 있는 내용을 잘 이해 하였다면 위에 있는 이미지를 보고 이해가 갈것입니다.

**바이트 형태의 메모리를 문자로 보여주기 위해서 유니코드를 이용해 원하는 방식(UTF-8, UCS-2)**으로 보여주기 위해 하는게 decoding이고 이렇게 만들어진 문자를 바이트 형태로 다시 되돌려 놓는게 encoding라고 합니다.

인코딩 / 디코딩은 정보의 형태나 형식을 변환하는 처리에 대해 표준화하고 보안, 처리 속도 향상, 저장 공간 절약 등의 목적으로 사용합니다.

 

'IT' 카테고리의 다른 글

OSI 7계층 모델  (0) 2022.08.13
프로젝트 시작시 해야할것들  (0) 2021.10.05
ASCII Code, Unicode, encode, decode (1편)  (0) 2021.09.30
맥 TouchEn nxKey 문제 해결  (2) 2021.04.19
Jira 도입 리뷰  (0) 2021.03.30

댓글