본문 바로가기
지식창고/IT 지식

ANSI, 유니코드 인코딩

by eteo 2023. 2. 19.

 


ASCII 코드 (American Standard Code for Information Interchange)


최초의 문자열 인코딩


7 bit로 구성되어 있으며, 영어 문자, 숫자, 특수문자, 기호 등 0x00부터 0x7F까지 총128개 문자를 표현할 수 있다. 
7 bit인 이유는 1bit를 패리티용도로 나뒀기 때문이다.

어느 시스템에서도 적용가능하지만 영어 이외의 문자를 표현할 수 없다는 단점이 있다.

 

 

 

 

ANSI

 

특정 인코딩 방식 한가지를 가리키는 말이 아니라 각 언어마다 CodePage라 불리는 코드표를 따로 정해두고, 언어별 코드표를 사용하여 인코딩하는 방식을 뜻한다.

예를들면 한글 CodePage는 EUC-KR과 CP949가 있다.

참고로 한글 Windows 메모장에서 ANSI를 선택하면 CP949로 인코딩된다.

EUC-KR : ASCII 문자(0x00-0x7F)는 1byte, 한글은 2bytes(0xA1-0xFE)(0xA1-0xFE) 로 표현하는 가변 길이 인코딩 방식

CP949 : EUC-KR의 상위호환. EUR-KR로 인코딩된 바이너리를 CP949로 디코딩할 수 있으나 CP949로 인코딩된 바이너리를 EUC-KR로 디코딩할 수 없다.




 

 



유니코드


전 세계의 모든 문자를 컴퓨터에서 일관되게 표현할 수 있도록 설계된 표준이다.

유니코드 자체는 '인코딩'이 아니며 전세계 거의 모든 문자를 고유숫자와 1:1 매핑 시키는 '방식'을 말하고, 유니코드 인코딩에는 여러 방식이 존재하는데 UTF-8, UTF-16 등이 있다.

보통, Unicode Encoding이라 하면 Windows, Java에서는 UTF-16을, 나머지 시스템에서는 UTF-8을 가리킨다.


UTF-8 : 유니코드를 위한 가변 길이 문자 인코딩(멀티바이트) 방식 중 하나이다. UTF-8은 언어에 따라 1~4bytes를 사용한다. 첫 1 byte는 ASCII 코드 값으로 영어를 사용할 경우 1byte만 사용한다. 중동지역, 유럽 언어는 2bytes를 사용하며, 한국, 중국, 일본 등 동아시아권 언어는 3bytes 이상을 사용한다. 웹에서 사용되며, 가장 흔하게 사용되는 방식이다.

UTF-16 : 문자 하나를 무조건 16bit로 표시하며 2바이트 범위 내에 들어가지 않는 문자(기본 다국어 평면 BMP에 속하지 않는 문자)는 4바이트로 표시한다. Java 프로그래밍에서 기본으로 사용된다. ASCII와 호환이 안되고 영어도 무조건 2btye를 사용하므로 낭비가 있을 수 있다.

UTF-32 : 모든 문자를 4bytes로 인코딩한다. 메모리 사용에 비효율적이므로 자주 사용되지 않는다.

 

 

 

 

 

 

 

 

 

 

 

참고 : 

https://onlywis.tistory.com/2

https://blog.naver.com/zxwnstn/221784822219