ASCII 문자셋은 128개의 문자를 0에서 127까지의 무부호 정수로 나타낸다.
ASCII 코드는 1바이트(0~255)를 사용해 128개의 문자만 사용하는데, 나머지 128개의 값은 어떤 용도로 사용하는 지에 대해서는 일반적으로 ‘사용하지 않고 무시’한다.
또 다른 128개의 문자를 추가로 정의하여 ASCII 코드를 확장할 수도 있지만, 이렇게 확장한 문자셋이 호환되기 위해서는 많은 사람들이 이에 동의해야하는 일이다.
아스키 코드는 몇몇 중대한 단점이 있지만 컴퓨터 시스템과 프로그램 사이의 표준 데이터 교환 방식으로 널리 사용되고 있다.
ASCII 코드는 각각 32개의 문자를 지닌 네 개의 그룹으로 나뉜다.
대문자와 소문자를 비교했을때 값이 $20 만 차이 나는 것을 확인 할 수 있으며, 이는 각 대문자와 소문자가 1비트만 제외하고 모두 동일함을 알 수 있다. → 대소문자 변경의 경우 5번째 비트를 일괄적으로 변경하므로써 빠르게 문자를 변경할 수 있다.
ASCII 코드는 표준이지만 시스템간의 호환성을 보장하지는 않는다. 다수의 장치와 애플리케이션에서 공통적으로 지원하는 것은 BS, tab, CR, LF 네 개 뿐이다.
EBCDIC는 메인프레임, 미니컴퓨터에서 주로 사용되는 문자셋이다. 특징으로는 알파벳 코드가 연속적으로 나열되지 않는다. 이는 BCD 인코딩 방식에서 유래하여, BCD로는 표기할 수 없는 이진값을 사용하면서 이렇게 된것으로 보인다.
싱글 바이트 문자셋에서는 인코딩할 수 있는 문자의 수가 256개로 제한돼 있으며, 그 이상의 문자를 나타내기 위해 더블 바이트 문자셋을 사용해야 한다.
DBCS에는 SBCS에 사용된는 알고리즘을 그대로 적용할 수 없을 수 있다.
또한 표준화의 일관성이 결여되어, 서로 다른 DBCS배포판은 동일한 문자를 다르게 나타낸다.
유니코드는 16비트로 최대 65,536개의 문자 코드를 표현할 수 있으며, ASCII 문자셋과 호환성을 지닌다. 상위 9개의 비트가 모두 0이면 나머지 7개의 비트는 ASCII 코드 값을 나타낸다.
오늘날 유니코드는 ASCII, DBCS를 모두 대체하였다.
이모지, 점성술 기호, 화살표등 컴퓨터에서 표현해야 할 문자셋이 폭발적으로 증가하자, 유니코드 기호 체계 또한 확장되었다. 하지만 고정 크기 표기법의 한계를 깨달았기 때문에 고정된 유니코드를 만들지 않기로 했으며, 다양한 인코딩 체계를 수용하였다.
유니코드 코드 포인트는 유니코드 문자 기호와 연계된 정수 코드로, ASCII 문자와 연계된 ASCII코드같은 역할을 한다. 유니코드 코드 포인트는 U+ 16진수 표기 법으로 문자를 나타낼 수 있다.
유니코드 2.0이 배포되면서 21비트 문자 공간을 사용할 수 있게 되었고 문자는 100만개 이상을 나타낼 수 있게 되었다. 또한 UTF-32, UTF-16, UTF-8등의 새로운 인코딩 방식을 사용할 수 있도록 하였다.
UTF-32는 유니코드 스칼라를 표현하는데 32비트를 사용하여 기존의 모든 유니코드 스칼라를 인코딩 할 수 있다. 다만, 4바이트를 사용하기 때문에 많은 용량을 차지하게 된다.
UTF-16은 서로게이트 페어 기법을 이용해 0x010000~0x10FFFF의 값을 나타낸다.
대부분 문자는 16비트만으로 표시하고 서로게이트 기법이 필요한 일부 문자만 32비트를 사용한다.
가장 널리 사용되는 UTF-8은 싱글바이트로 표기하는 ASCII 문자셋과 호환된다.(HO 비트가 1인 경우 코드 포인트 출력을 위해 1~3바이트가 추가적으로 필요하다)
개발 환경에 따라 기본적으로 지원하는 인코딩이 달라지는데 OSX와 WINDOW는 UTF-16을 사용하고, 대부분의 유닉스 시스템은 UTF-8을 사용한다. 파이썬은 UTF-32를 사용하고, 다른 대부분의 언어는 UTF-8을 사용한다.