본문 바로가기
프로그래밍/이산 수학

문자 - ASCII, EUC, Unicode, UTF-8

by 3.14pie 2022. 12. 30.

ASCII- 영어 알파벳과 기호들을 컴퓨터에서 표현하는 규약, 128개의 문자 -> 7비트 사용, 1바이트는 사용하지 않거나 오류 검출용으로 사용한다.

 

ANSI - 영어 외의 다른 문자 언어를 표현하기 위해 만든 인코딩, 256개 문자 -> 8비트 사용

 

멀티바이트 - 1바이트에 담을 수 없는 언어(한국어, 중국어, 일본어)들을 위해 나왔다. 문자를 2바이트 내에서 표현할 수 있게 되었다.

 

EUC - Extended Unix Code, 한,중,일을 위한 멀티바이트 문자 인코딩이다. 같은 바이너리 패턴으로 다른 나라 언어를 표현한다. 그래서 같은 값을 다른 언어팩에 넣으면 글자가 깨져서 보인다. (EUC-KR - 한국어 문자 인코딩 방식)

 

-> 여러 언어를 한번에 표현이 불가능하다, 이모티콘도 표현이 불가능하다.

 

Unicode - 전세계의 모든 문자, 이모티콘까지 일관되게 표현할 수 있는 규격, 인코딩 방식(UTF-8, UTF-16, UTF-32 - 최소 단위가 몇 바이트인지)

 

UTF-8 - 현재 모든 웹페이지의 93%가 해당 인코딩 방식을 사용한다. UTF-32에 비해 메모리를 적게 쓰고, UTF-16에 비해 인코딩, 디코딩 알고리즘이 쉽고, 엔디안 문제가 없다. 아스키 코드와 100% 호환된다.(1바이트로 표현) 한국어, 중국어, 일본어를 제외한 거의 모든 문자를 1 또는 2 바이트를 사용한다. 한국어는 대부분 3바이트가 필요하다.(UTF-16을 쓰면 2바이트로 충분) 첫번째 바이트의 비트 패턴을 보면 몇 바이트 글자인지 알 수 있다.(사용하는 바이트 수에 따라 0, 110, 1110, 11110 으로, 다음 바이트는 10으로 시작한다.)

 

> 엔디안 - 최소 저장단위를 초과하는 데이터를 저장할 때 저장 순서를 정의한다. 보통 최소 저장단위는 1바이트이다.

> 리틀 엔디안 - 데이터가 끝나는 마지막 단위가 가장 작은 메모리 주소에 위치한다.

> 빅 엔디안 - 데이터의 마지막 단위가 가장 큰 메모리 주소에 위치한다. (사람이 읽기 쉽다.)