표현 방식
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구역으로 숫자를 쪼개야 합니다.
- 첫 번째 바이트의 4번째 비트부터 3비트
- 첫 번째 바이트의 뒤의 2비트와 2번째 바이트의 앞의 4비트
- 두 번째 바이트 뒤의 4비트와 세번째 바이트 앞의 2비트
- 세 번째 바이트 뒤의 6비트
쪼갠 숫자를 UTF-8의 규칙에 맞게 각각 아래와 같이 적용시킵니다.
UTF-8에서의 앞의 비트를 이용한 문자 종류 찾기
UTF-8의 적용되는 규칙을 이용해서 이 문자가 어떤 문자인지 유추해낼 수 있습니다.
- 어떤 바이트가 0으로 시작하면 그 바이트는 ASCII 코드입니다.
- 어떤 바이트가 110으로 시작하면, 거기서부터 2바이트가 한 글자입니다.
- 어떤 바이트가 1110으로 시작하면, 거기서부터 3바이트가 한 글자입니다.
- 어떤 바이트가 11110으로 시작하면, 거기서부터 4바이트가 한 글자입니다.
위와 같은 규칙으로 문자를 유추해낼 수 있습니다.
encode & decode
위에 있는 내용을 잘 이해 하였다면 위에 있는 이미지를 보고 이해가 갈것입니다.
**바이트 형태의 메모리를 문자로 보여주기 위해서 유니코드를 이용해 원하는 방식(UTF-8, UCS-2)**으로 보여주기 위해 하는게 decoding이고 이렇게 만들어진 문자를 바이트 형태로 다시 되돌려 놓는게 encoding라고 합니다.
인코딩 / 디코딩은 정보의 형태나 형식을 변환하는 처리에 대해 표준화하고 보안, 처리 속도 향상, 저장 공간 절약 등의 목적으로 사용합니다.
'IT' 카테고리의 다른 글
[HTML] a 태그를 이용한 다운로드 기능 (0) | 2023.01.05 |
---|---|
프로젝트 시작시 해야할것들 (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 |
댓글