<aside> 💡 프로그래밍에서 문자열을 다루는 방법과 유니코드 및 인코딩에 대해 이해해보자

</aside>

유니코드???

전 세계의 모든 문자를 컴퓨터에서 일관적으로 처리(인코딩, 디코딩)할 수 있도록 설계된 산업 표준이다. 유니코드의 목적은 현존하는 모든 문자 인코딩 방법을 유니코드로 바꾸는 것! 유니코드는 ASCII의 확장된 형태이다.

ASCII???

영문문자를 사용하는 대표적인 문자 인코딩으로 7비트모든 영어알파벳을 표현할 수 있다. 이때 모든 영어 알파벳이라 함은, 52개의 영문 알파벳 대소문자와, 10개의 숫자, 32개의 특수 문자, 그리고 하나의 공백 문자를 의미하는 것이다.

UTF-8 vs UTF-16???

UTF-8 과 UTF-16 은 모두 유니코드에서 사용하는 가변길이 문자인코딩 방식을 의미한다. (단, 유니코드에 고정길이 인코딩 방식인 UTF-32도 존재)

1. UTF-8?

UTF-8은 Universal Coded Character Set + Transformation Format -8-bit의 약자이다. UTF-8은 한 문자를 나타내기 위해서 1byte(=8bits)부터 4bytes까지를 사용한다.(즉, 가변길이) 바이트의 순서를 따지지 않고, 순서가 정해져 있다. 주로, 네트워크를 통해 전송되는 텍스트UTF-8를 사용하게 된다. (길이를 줄일 수 있기 때문)

아래는 어떻게 작동하는지를 보여주는 예시이다.

let encoder = new TextEncoder(); // 기본 인코딩은 'utf-8'
encoder.encode('코') // Uint8Array(3) [236, 189, 148]

(236).toString(2) // "11101100"
(189).toString(2) // "10111101"
(148).toString(2) // "10010100"

1. UTF-16?

UTF-16은 대부분의 문자를 16bits로 표현한다. (2bytes) 대부분의 문자에 속하지 않는 문자들은 32bits(4bytes)로 표현하게 된다.