ASCII Code
7bit 코드 체계
숫자 하나를 문자 하나에 대입한 것
7bit이기 때문에 나타낼 수 있는 문자가 최대 128개임
Laitn어 권에서는 알파뱃,숫자,특수기호를 다 나타내는데 128개면 충분했기 때문에 ASCII를 사용하게 됨
UNICODE
컴퓨터가 세계화 되면서 다양한 문자 체계를 표현하기에 7bit는 모자르게 됨
( 심지어 중국의 한자는 10만 개가 넘음 ... )
다양한 문자들을 표현하기 위해 16bit 기반의 UNICODE를 만들게 됨
그 중에서 한글은 조합형, 완성형 두 가지 코드체계를 두고 갑론을박이 있었으나 현재는 완성형이 주류가 됨
조합형 : ㅈㅗㅎㅏㅂㅎㅕㅇ과 같이 자음 + 모음 형식으로 코드를 표현함
완성형 : 완 성 형 과 같이 한 개의 글자를 하나의 숫자에 대입함
이러한 형식으로 다양한 문자를 16bit ( 2**16 == 65536 개 ) 숫자 한 개에 매핑하는 코드체계를 유니코드라고 함
16bit를 16진수로 나타내기 때문에 16진수 네 자리로 한 글자를 표현함
"박" 이라는 하나의 완성형 글자가 하나의 UNICODE에 대입됨
16bit 이므로 16진수 네 자리로 이루어진다. (2**4) **4 = 2**16
BC15이므로 11(B) 12(C) 1 5 => 1011 1100 0001 0101 의 16bit를 의미하게 된다.
UTF-8
등장 배경
인터넷이 등장하면서 여러 문자 정보를 다루는 HTML을 브라우저로 해석할 때 인코딩 타입에 따라 문자가 깨지는 현상이 발생하게 됨
또 문자 인코딩 문제가 발생하게 되었고
그 결과 UTF-8 인코딩 체계가 등장하게 됐고 현재 가장 보편적으로 사용하게 됨
인코딩 방식
UTF-8 : UNICODE + ASCII 방식을 같이 사용한다.
UNICODE(16bit) 를 3Byte(24bit)로 표기함 3Byte까지 사용하게 되면서 표현 못할 문자가 없어짐.
ASCII 코드는 1Byte를 사용함
"가"라는 한글 완성형 글자를 보자
UNICODE로 표기했을 때는 16bit AC00이고
UTF-8 방식으로는 234,176,128 이다. 이를 16진수로 변경하면 EA B0 80 이 된다.
UTF-8BOM
UTF-8 인코딩 방식을 사용하고 있다고 Byte Order Mark를 3Byte만큼 문자열 가장 앞에 추가한다.
UTF-8BOM의 앞에 3Byte를 제거하지 않고 디코딩하면 3Byte만큼 깨진 글자가 나오게 된다.
UTF-16
인코딩 방식
UTF-8 과는 다르게 모든 문자열을 16bit로 표현한다.
이때 ASCII 코드는 8bit에서 16bit로 비트 수가 늘어나게 된다. 그러므로 자릿수를 맞추기 위해 00을 앞 또는 뒤에 추가해 줘야 한다.
UTF-16BE (Big Endian) vs UTF-16LE (Little Endian)
UTF-16은 16bit로 표현하게 되기 때문에 16진수 4자리로 이루어 진다.
이 때 4자리를 어떤 방식으로 나열하냐에 따라 Big Endian, Litte Endian이 나뉘게 된다.
가령 0xABCD라는 4자리의 16진수가 있다고 가정하자.
BE 방식으로 읽게 되면 AB CD가 되고
LE 방식으로 읽게 되면 CD AB가 된다.
'개발 지식' 카테고리의 다른 글
객체지향과 절차지향? 무엇을 선택할까 (0) | 2024.09.02 |
---|---|
HTTP 메소드 PUT / PATCH 의 차이점 (0) | 2023.08.12 |
Docker는 무엇일까? 왜 사용해야 할까? (0) | 2023.08.02 |
변수/메소드/클래스 명명법 (0) | 2023.08.02 |