문자 집합에 대하여

hyun·2021년 12월 6일
0

시작하기 전에 문자집합은 character set이라고 한다
간단하게 설명하면 문자에 번호(문자코드)를 부여한 테이블이라고 생각하면 된다

ASCII (7bit 크기의 번호를 부여)

*최대 128자
-영어 대ㆍ소문자 52자, 아라비아 숫자 10자, 특수 문자 32자, 공백 1자, 33개의 제어 문자로 구성되어 있다

여기에 유럽문자를 포함해서 나온것이 ISO-8859-1

ISO-8859-1 (영어, 프랑스어, 이탈리아어 등) (8bit)

*ASCII + 프랑스어 등 = 256자
(128자) (128자)

*한글 음절에 대한 정의가 없다

여기에 한글 문자 규칙을 추가해서 나온것이 EUC-KR

EUC-KR (16bit 크기의 번호를 부여) - 한글 2350자에 대해서만 번호 부여

*한글을 2byte로 사용한다

*EUC-KR을 만들 당시에는 2350자 이상 쓸 줄 몰라서 시간이 지나고 몇몇 글자를 못쓰는 상황이 발생하기 시작했다
-똠이나 똡같은 문자에 대해 숫자가 지정되지 않아서 입출력이 되지 않는다

그래서 등장한 것이 EUC-KR에 부족한 한글 추가하여 나온 조합형이다

조합형 (16bit 크기의 번호를 부여) -초성 중성, 종성 각 5bit로 번호 부여

*초성(5)+중성(5)+종성(5) = 16bit (맨 앞 1bit는 한글) > windows3.1까지 사용
초성, 중성, 종성에 부여된 숫자를 합해서 문자 코드를 정한다

*5bit는 0~31 이기 때문에 초성, 중성, 종성 각각 31개씩 정의가 가능하다

*가장 한글답다는 장점이 있지만 16bit 중에서 1로 시작하는 절반의 값을 한글이 모두 사용한다는 단점이 있다

그래서 등장한 것이 EUC-KR + α, 총 11172자의 한글 음절에 대해 번호 부여하여 만들어진 MS949이다

MS949(CP949) (16bit 크기의 번호를 부여)- Windows 95 부터 사용

*MS949에서 새로 추가한 문자에 대해 사용되고 있지 않은 번호를 부여했다
그래서 번호가 숫서대로 부여되지 않았다
대신 기존 EUC-KR 규칙과 호환된다

ex) 똠 > 0x8c63
똡 > 0x8c64

*MS949 규칙에 따라 문자를 저장하더라도 EUC-KR에 정의된 문자로 기존과 같은 번호를 사용한다

여기서 국제 표준 규칙으로 한글에 대하여 번호를 다시 붙히고, 영어도 16bit 사용하는
Unicode(UTF-16)이 등장했다

Unicode(UTF-16)=ucs2 *국제 표준이다

국제 표준 - JAVA에서 문자를 저장할 때 사용하는 규칙

*2byte 사용를 사용한다 (영어도 2byte)

*기존의 ISO-8859-1 문자도 2byte 숫자로 사용한다

*11172자의 한글 음절에 대해 새로 번호를 부여 했다 - (EUC-KR 과 호환되지 않는다)

영어를 1byte로 쓰기 위해서 UTF-8이 등장했다

UTF-8(유니코드 변형 포맷) (1~4 byte 크기의 번호 부여)

문자 인코딩 방식 중 하나이다

*8BIT 문자로 정의 가능한 것은 그대로 8bit 사용
ISO-8859-1 문자로 예전처럼 1byte 사용
영어권에서는 Unicode를 처리하기 위해 따로 작업할 필요가 없다
ISO-8859-1과 호환

0,1,2,A,B,a,b > 예전처럼 1byte 사용 =>메모리 절약, 기존 편집기와 호환

한글의 UTF-8 변환 규칙에 따라 유니코드를 변환한다 => 2byte > 3byte 메모리 증가

profile
초보 개발자

0개의 댓글