-
문자표(character set), 인코딩(encoding) 총 정리업(業) 2021. 4. 12. 19:46
<문자표(Character set)>
문자를 어떠한 숫자로 대응시킨것
<ASCII>
1바이트, 8비트, 256개
로마자 전용 문자표
<UNICODE>
바이트, 16비트, 16384개
다국어를 위한 문자표
다른 나라의 문자도 두루두루 포함함
(유니코드 없이 각 나라 마나 1바이트의 각자의 아스키 테이블을 구성한다면 글로벌 시대에 상호 호환이 안되어 불편할 것이다. 글자가 깨질 것이다 (왜냐면, 독일에서의 0x1A와 한국에서의 0x1A의 정의가 다르기 때문에))
<인코딩>
문자표의 숫자를 표현하는 방식
<UTF-8>
utf8은 가변바이트를 사용하여 unicode를 표현해주는 인코딩 방식이다.
한글 한 글자는 3바이트로 표현됨
출처: 위키피티아 <EUC-KR>
한글(한글과 한국에서 통용되는 한자 등)을 2byte로 변환하는 문자표
문자마다 2byte의 코드표가 정해져 있다. ex) 가 <==> B0A1
utf8과 달리 계산과정 없이 문자표에서 찾아주면 됨. 그리고 사이즈가 작음(2bytes VS 3bytes)
<percent encoding>
주로 url에 문자를 표현하기 위해 사용된다.
알파벳 대소문자와 숫자, - , _ , . , ~ 을 제외한 문자는 8비트 단위로 묶어, 16진수 값으로 utf8을 기준으로 인코딩한다.
걍 utf8을 8비트 단위로 '%'기호를 앞에 붙인 거.
* 예시:
UNICODE에서 "떢"은 U+B5A2,
utf8로 U+B5A2를 표현하면 EB96A2,
이를 percent encoding으로 표현하면 %EB%96%A2
<base64>
base64는 문자 그대로 64진법이라는 뜻으로 데이터를 64진법(따라서 크기는 6비트)으로 저장함.
64진법 = 알파벳 대소문자(52개) + 숫자(10개) + 기호(2개)
*변환 방법
1) 먼저 24bit(== 6bit x 4)의 버퍼를 생성하여, MSB부터 바이트 데이터(기존 데이터를 2진수 변환을 하여)를 넣는다
2) 그리고 MSB쪽부터 6bit씩 잘라서 base64표에 대응되는 문자로 변환한다
3) 남는 6bit 덩어리는 '='으로 한다.
* Base64를 사용하는 이유
base64를 이용하면 데이터의 크기가 약 33% 정도 늘어나지만
시스템에 독립적으로(공통 ASCII의 문자들만을 사용해서) 동일하게 전송, 저장을 보장하기 위해 사용
주로 바이너리 데이터를 인코딩하는 데 사용됨
출처: 위키피디아 * 예시(계속):
떢을 base64로 인코딩할 때는
UNICODE(U+B5A2) --> utf8(EB96A2) --> base64(65ai)
'업(業)' 카테고리의 다른 글
OCaml Tutorial 뿌셔버리기 (4) 2023.09.14 [영어강의] 관계대명사의 활용: 관계부사 When & Where (0) 2023.09.07 블로그지기의 직업 (0) 2023.09.07 kakao flutter sdk 주의사항 (0) 2023.08.19 webhacking.kr 18번 문제 풀이 (0) 2021.04.12