그래 그리 쉽지는 않겠지

검색

검색 아이콘검색을 여는 아이콘

Unicode

2023-11-07

서로 다른 문자에 고유 번호를 할당하는 테이블

# 코드 포인트

코드 포인트 문자에 할당된 고유 번호

크기

0x10FFFF (약 110만) 까지 코드 포인트가 정의되어 있음 (0xFFFF(65,536)가 17개)

  • 현재 80만 개 정도 여유가 있음

코드 포인트를 작성하는 규칙

  • 접두사 U+: unicode 임을 나타냄
  • 뒤에는 16진수로 코드 포인트 번호 표현

locale 의존

  • 같은 코드 포인트도 locale에 따라 보여지는게 다름

extended grapheme clusters

코드포인트 여럿이 모여 하나의 문자(이모지)를 나타냄

# surrogate pairs

UCS-2

  • 65,536 문자를 표현하기 위한 2바이트의 고정 길이 인코딩
  • UTF-16 의 원버전

surrogate pair

  • 단일 유니코드 코드 포인트를 인코딩하는 데 사용되는 두 개의 UTF-16 단위
  • 상위 6비트를 마스킹
  • ℹ️ unicode 에서 U+D800 ~ U+DFFF 는 surrogate 영역으로 할당됨
  • 상위 surrogate
    • 상위 1101_10 마스킹
    • 범위: U+D800 ~ U+DBFF
  • 하위 surrogate
    • 상위 1101_11 마스킹
    • 범위: U+DC00 ~ U+DFFF

코드 포인트 구하기

  • 마스킹하고 남은 상위 4비트에서 +1

example

  • 두 개의 UTF-16: D83D DCA9
  • 상위, 하위 surrogate 를 마스킹 하고 남은 3D, A9
    • (1101_10)00 0011_1101, (1101_11)00 1010_1001
    • 0000 1111 0100 1010 1001 -> 0001 1111 0100 1010 1001
    • 단일 유니코드 코드 포인트: U+1F4A9
상위 utf-16하위 utf-16code point
U+FFFFU+FFFF
U+D800U+DC00U+10000
U+D83DU+DCA9U+1F4A9
U+DBFFU+DFFFU+10FFFF

# UTF-8

UTF-8 관련 글

# Reference