문자 집합과 인코딩, 디코딩
문자 집합(Character Set)
컴퓨터가 인식하고 표현할 수 있는 문자의 모음을 문자 집합이라고 한다.
예를 들어, 문자 집합이 {a, b, c, d}만 존재한다면 그 외의 문자들은 컴퓨터가 이해하지 못한다.
문자 집합에 속해있다고해서 컴퓨터가 그대로 문자를 이해할 수 있는 것은 아니다.
왜냐하면 컴퓨터는 0과 1만 이해할 수 있기 때문이다.
인코딩(Encoding)
문자 집합을 컴퓨터가 이해할 수 있도록 바이너리(2진수)로 변환하는 과정을 인코딩이라고 한다.
같은 문자 집합에도, 여러 인코딩 방법이 존재한다.
디코딩(Decoding)
인코딩의 반대로 0과 1로 이루어진 바이너리를 사람이 이해할 수 있는 문자로 변환하는 과정을 디코딩(Decoding)이라고 한다.
아스키 코드(ASCII)
영어 알파벳과 아라비아 숫자 그리고 일부 특수문자를 포함하는 초창기 문자 집합이다.
아스키는 문자를 나타내기 위해 8비트를 사용한다.
이 중 1비트는 패리티 비트(Parity Bit)로 오류 검출을 위해 사용되기 때문에 사실상 문자 표현에는 7비트만 사용한다.
예를 들어 문자 'A'는 십진수 65, 이진수 1000001로 인코딩 된다.
아스키 코드의 단점은, 아스키 문자 집합 외의 문자나 특수문자도 표현할 수 없다는 점이다.
아스키 문자 집합에 속한 문자들은 7비트로 표현되기 때문에, 128개보다 많은 문자를 표현하지 못하기 때문이다.
그래서 한국을 포함한 영어권 외의 나라들은 자신들의 언어를 0과 1로 표현할 수 있는 고유한 문자 집합과 인코딩 방식을 만들어 냈다.
그러나 이 방법도 해결법이 되지는 않았다, 언어별로 인코딩을 해야한다면 다국어를 지원하는 프로그램을 제작할 때 각 나라 언어의 인코딩을 모두 알아야한다는 단점이 존재하기 때문이다.
유니코드(Unicode)
대부분 국가들의 문자와 특수문자, 화살표나 이모티콘까지도 표현할 수 있는 문자 집합이며 현대 컴퓨터에서 문자를 표현할 때 가장 많이 사용되는 표준 문자 집합
특징으로는 글자에 부여된 값 자체를 인코딩 된 값으로 삼지 않고, 값을 다양한 방법으로 인코딩 하는데 이런 인코딩 방법엔 UTF-8, UTF-16, UTF-32 등이 존재한다.