ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 문자표(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)

    댓글

Designed by Tistory.