이번 포스팅에서는 컴퓨터에서 문자를 표현하는 방법에 대해 알아보겠습니다.


컴퓨터에서 문자를 저장하는 방법

컴퓨터에서는 숫자만 저장할 수 있기 때문에 문자 'A' 를 숫자로 변환하여 저장합니다. 영어 알파벳을 예로들면, a~Z까지 52개가 존재하는데 이는 6비트를 조합하면(64개) 모두 표현이 가능합니다. 000001 = 'a' 라고 규칙을 정해놓는 셈입니다. 


하지만 전세계적으로 네트워크가 발달하여 각 나라에서 사용하는 코드체계가 달라 서로 소통하기가 어렵고 6비트만으로는 전세계의 언어를 표현할 수가 없었습니다.  예를 들어 미국에서 000001 = 'a' 이지만 한국에서는 000001이 = 'ㄱ' 으로 사용했었다면 같은 비트더라도 해석하는 방법이 다르기 때문에 어려움이 있었습니다. 


이러한 문제를 해결하기위한 코드체계 표준안을 만들게 되었습니다.


ASCII (American Standard Code For Information Interchange)

아스키는 문자 인코딩 표준으로 7bit 인코딩으로 128문자를 표현하는 코드체계입니다. 33개의 출력 불가능한 제어 문자들과 공백을 비롯한 95개의 출력 가능한 문자들로 이루어져 있습니다. 아래에서는 정수, 16진수, 8진수, 문자형으로 표현한 아스키코드표입니다. 



확장 아스키

표준 문자 이외의 악센트 문자, 도형 문자, 특수 문자, 특수 기호 등 부가적인 문자 128개를 더 추가할 수 있게하는 부호. 하지만 부가적인 문자는 컴퓨터 생산자나 소프트웨어 개발자에 의해 할당되므로 서로 다른 생산자, 개발자끼리는 공용으로 사용할 수 없습니다.


유니코드

아스키는 알파벳을 기준으로 만들어진 코드체계이고 전 세계의 다양한 언어를 표현하지 못합니다. 이러한 다국어 처리를 위한 표준이 유니코드입니다.



유니코드는 다시 Character-Set에 따라 UCS-2(Universal Character Set 2), UCS-4(Universal Character Set 4)로 구분됩니다. 이는 유니코드를 저장하는 변수의 크기를 정의하는데 문자(파일)을 인식할 때 UCS-2인지, UCS-4인지 구분해서 구현해야 하는 문제가 생겼습니다. 이러한 문제를 해결하기위해 변수 크기에 따라 표준안을 만들게 되었습니다. 


유니코드 인코딩

UTF-8 (in web) - 한 문자를 표현하는데 최소 1바이트 ~ 최대 4바이트를 사용합니다.
UTF-16(in windows, java) - 한 문자를 표현하는데 최소 2바이트 ~ 최대 4바이트를 사용합니다.
UTF-32(int unix) - 한 문자를 표현하는데 최소,최대 4바이트를 사용.



'CS > 개발지식' 카테고리의 다른 글

base64 인코딩/디코딩 원리  (0) 2017.04.04
OOP  (0) 2017.03.21
프로세스와 쓰레드의 차이점  (0) 2017.03.20
Runnable 과Thread의 차이  (0) 2017.03.19

+ Recent posts