[KOR] Encoding [UTF-16BE; ANSI]

mntly·2024년 8월 14일
0

1. Unicode

  • Unicode 자체는 encoding 방식이 아니라 문자와 순서를 1:1로 매칭한 하나의 코드 표를 나타낸다.

  • Unicode는 문자 1개를 2 byte를 표현한다. 그래서 Unicode에 의해 encoding된 문자열은 "\x00"가 아니라 "\x00\x00"으로 끝난다.

  • 이러한 이유로 Unicode의 Null 종단 문자는 2 byte이다. : "\x00\x00"

UTF-16BE

  • UTF-16 : 16-bit Unicode Transformation Format

  • BE : Big Endian

Unicode에 따라, Big Endian 형태로
한 문자를 16 bit (2 byte)로 표현하는 encoding 방식이다.

  • UTF-16BE임을 나타내기 위해 문자열 제일 앞에 BOM, "%uFEFF"을 붙인다.

BOM, Byte Order Mark

  • 원래 BOM은 프로그램에게 텍스트에 대한 정보를 주는 역할을 한다.

  • UTF-16에서 BOM은 Endian에 관한 정보를 준다.

    BOM : %uFEFF : UTF-16BE : Big Endian

    BOM : %uFFFE : UTF-16LE : Little Endian

💡 UTF-16BE Format : "%uFEFF .... %u0000"

  • Ex:) "A" : "%uFEFF%u0041%u0000"

2. ANSI

  • 특정 인코딩 방식 한 가지를 가리키는 말이 아니라 the default local/codepage for my system을 의미한다.

  • 각 CodePage 마다 코드표가 따로 존재해 각 언어에 따른 별도의 CodePage를 사용한다.
    (ex: EUC-KR, CP949 : 한글에 대응되는 CodePage)

  • 한글은 2 byte로 한 문자를 표현하지만 영어는 1 byte로 한 문자를 표현한다.

    • 영어의 경우 Null 종단 문자 역시 1 byte이다. : \x00
  • UTF-16과 달리 BOM을 사용하지 않는다.

💡 ANSI Format : "\x.. .. \x00"

  • Ex:) "A" : "\x41\x00"

REFERENCE

  1. Unicode, ANSI
  2. UTF-16
  3. BOM

피드백은 언제나 환영합니다

0개의 댓글