UTF-8

오정빈·2024년 4월 7일

Node.js에서 readFile함수를 사용할 때 utf8로 인코딩을 해주어야 바이너리 값으로 출력이 되지 않고 우리가 원하는 글자로 출력이 된다고 한다

utf-8이라는 것을 여기서 처음 본 것이 아닌 HTML 기본 코드를 보면 UTF-8이 적혀저 있는 것을 볼 수 있다

UTF-8이란 무엇일까??

UTF-8을 알기 위해서는 유니코드를 먼저 알아야한다

유니코드란 아스키코드처럼 문자열 셋이다

과거 컴퓨터에서 표현가능하던 문자는 영어로 충분했으나 나라들마다 자기나라 언어도 표현하고 싶어 모든 나라의 언어를 하나의 문자열 셋인 유니코드로 통일을 시켰다

유니코드에 각 문자마다 주어진 숫자를 어떤 방식으로 컴퓨터에 0이나 1을 집어넣는 방식을 인코딩이라하고 UTF - 8은 그 방식 중 하나이다

UTF-8(UCS Transformation Format 8)

유니코드 한 문자를 나타내기 위해 1바이트에서 4바이트까지를 사용한다

처음 128개의 UTF 문자와 처음 128개의 ASCII 문자(숫자 0-127)와 같고 1바이트를 사용한다
다른 모든 문자는 2~4바이트를 사용한다

설계 원칙

  • 1바이트로 표시된 문자의 최상위 비트는 항상 0이다

  • 2바이트 이상으로 표시된 문자의 경우 첫 바이트의 상위 비트들이 그 문자를 표시하는 데 필요한 바이트 수를 결정한다 예를 들어서 2바이트는 110으로 시작하고 3바이트는 1110으로 시작한다

  • 첫 바이트가 아닌 나머지 바이트들은 상위 2비트가 항상 10이다

UTF-8이 이런 성질을 가지도록 설계한 까닭은 어떤 경우에도 한 문자에 대한 바이트 표현이 다른 문자에 대한 바이트 표현의 일부가 되는 경우가 없도록 하기 위함이다

유니코드의 인코딩 방식으로는 UCS-2, UCS-4, UTF-32, UTF-16, UTF-8등 여러개가 있다

문자마다 적절한 바이트 수를 차지하도록 해서 다른 방식들보다 일반적으로 더 적은 용량을 쓰고 호환문제도 가장 적은 UTF-8이 전세계적으로 가장 널리 사용된다

0개의 댓글