문자열 인코딩 (Literal Encdoing)이란?
- 사람의 신호를 바이너리 코드로 바꿔주는 것을 문자열 인코딩(Encoding)이다.
반대로 디코딩(Decoding)이란 바이너리 코드를 사람의 신호로 바꿔주는 것이다.
ASCII 코드 (American Standard Code for Information Interchange)
최초의 문자열 인코디이다. 7bit로 구성되어 있으며, 영어를 위한 문자를 표현할 수있다. 128개 문자를 표현할 수 있다.
이후 다른 언어를 지원해야할 필요가 생겨 만들어진 인코딩이 ANSI 이다.
ANSI 코드 (American National Standard Institute)
ANSI는 8bit로 구성되어 있으며 ASCII의 확장판이며 아스키보다 1비트를 더 사용한다.
앞의 7비트는 아스키와 동일하고, 뒤에 1비트를 이용하여 다른 언어의 문자를 표현한다.
ANSI = ASCII(7bit) + CodePage(1bit)
MBCS (Multi Bytes Characters Set)
MS(MicroSoft)에서 만든 인코딩 방식이라고 한다.
그냥 유니코드랑 같다고 보면 됨.
EUC-KR (Extended Unix Code-Korea)
8비트 문자인코딩 한글 완성형 인코딩이다.
확장 유닉스 코드(Extended Unix Code, EUC)란 한국어, 중국어, 일본어 문자 전산화에 주로 사용되는 8비트 문자 인코딩 방식이다.
EUC의 구조는 ISO 2022 표준에 기반하고 있다.
Unicode ( UTF-8, UTF-16 등)
UTF-8(Universal Coded Character Set + Transformation FOrmat - 8-bit) = Unicode(3바이트) + ASCII(1바이트)
유니코드를 위한 가변길이 문자 인코딩 방식 중 하나이다.
UTF-8 인코딩은 유니코드 한 문자를 나타내기 위해 1바이트에서 4바이트까지 사용한다.
ASCII문자들은 1바이트만으로 표시된다. 4바이트로 표현되는 문자는 모두 기본 다국어평면(BMP) 바깥의 유니코드 문자이며,
거의 사용 되지 않는다.
영문이면 1바이트, 영문 이외의 것들(한글 등)한그은 3바이트 표기
'널'이라는 한글은 유니코드로 B110 이다.
예를들면 한글 '널' 인 경우 UTF8: 235,132,144; 를 참조하여
각 숫자를 16진수로 바꾼다.
결론적으로 UTF 체계로
EB 84 90 으로 매핑된다.
따라서 첫 128 문자는 1바이트로 표시되고, 그 다음 1920 문자는 2바이트로 표시되며, 나머지 문자들 중 BMP 안에 들어 있는 것은 3바이트, 아닌 것은 4바이트로 표시된다.
UTF-8 인코딩 방식으로 100만개 이상의 문자를 인코딩할 수 있다고 한다.
Unicode allows for 17 planes, each of 65,536 possible characters (or 'code points'). This gives a total of 1,114,112 possible characters. At present, only about 10% of this space has been allocated.
UTF-8(BOM)
맨 앞에 EF BB BF 가 붙어서 나오는데 UTF를 사용한다는 의미이다.
예를 들어 문자열 인코딩을 UTF-8(BOM)으로 했는데 UTF-8로 해석하면
앞에 3바이트는 깨져서 나올 것이다.
UTF-16 (리틀엔디안이야? 빅엔디안이야?가 추가 된다.)
마찬가지로 가변너비 인코딩 형식이다.
빅엔디안 방식으로
'널'이라는 한글을 UTF-16으로 인코딩하면
FF B1 10
리틀엔디안 방식으로
'널'이라는 한글을 UTF-16으로 인코딩하면
FF 10 B1 으로 읽는다.
URL 인코딩
URL 파라미터에 문자열을 넣어서 서버에 전송할 수 있다.
ex ) google.com/search?q=검색어(Channel 알코)
google.com/search?q=Channel%20%EC%96%84%EC%BD%94 이렇게 나오는데,
약속된 방식으로 UTF-8로 치환한다.
퍼센트 인코딩이라고도 한다.
결론 유니코드는 국제표준 문자표이고 UTF-8은 인코딩 방식이다.
도움을 받은 링크
https://jjeong.tistory.com/696
'Tech Blog > Info(Linux,etc)' 카테고리의 다른 글
컴퓨터에서 % 기호와 // 기호 (1) | 2023.05.10 |
---|---|
시간복잡도 (빅오표기법) Time-Complexity (Big-O) (0) | 2023.01.28 |
프로세스 스케줄링이란? (0) | 2023.01.10 |
Rest API 의미 정리 (0) | 2022.09.14 |
Xavier AGX Fan 명령어, Cuda Cudnn 용어 정리 등 (1) | 2021.10.11 |