본문 바로가기

카테고리 없음

유니코드와 ANSI, 그리고 UTF에 설명

반응형
  • 유니코드에 대하여...

유니코드는 문자 집합을 가진 테이블이다. (유니코드 테이블)

유니코드와 같은 역할을 하는 또 다른 유명한 문자 집합은 바로 아스키코드다. (아스키코드 테이블)

이 외에 여러가지 문자 집합을 가진 테이블이 존재한다.

MS에서 메모장으로 저장시 인코딩 옵션에 표시되는 유니코드는 UTF-16을 뜻하는 것으로 유니코드 본래의 뜻을 잘못 표현하고 있다.



  • UTF에 대하여...

UTF는 Unicode transformation format의 약자로 유니코드를 어떤 조합으로 인코딩 할 것인가의 규약이다.

the Unicode Transformation Format (UTF) encodings, and the Universal Coded Character Set (UCS) encodings.

이 규약의 종류로는 UTF-8 / UTF-16 / UTF-32 / UCS-2 / UCS-4 등이 있다.

UTF에는 BOM(Byte order Mark) 이라는 것이 있는데, 이 것은 CPU 종류에 따라 처리가 달라지면서 생기는 문제를 해결하기 위해 생긴 규약이다.



  • UTF-8 특징

BOM값은 EF BB BF로 시작한다.

BOM은 있거나, 혹은 없거나로 구별된다.

UTF-8은 ASCII 코드를 내포하고 있다고 보면 된다.

한글은 3Byte가 필요하다.

  • UTF-16 특징

UTF-16에는 Little Endian과 Big Endian이 있다.

UTF-16LE
UTF-16BE

UTF-16은 UCS-2의 확장이라고 보면된다.


BOM (Little Endian) FF FE로 시작한다.

BOM (Big Endian) FE FF로 시작한다.



  • UTF-32 특징

UTF-32는 UCS-4로도 알려져 있으며, 모든 문자를 같은 길이(32bits)로 처리한다.

UCS-4LE / UCS-4BE



  • ANSI

ANSI를 확장한 것으로는 EUC-KR / EUC-JP 등이 있는데 MS에서 시작한 것이다.





- 멀티 바이트는 "한 문자가 1 또는 그 이상의 바이트로 표현됨" (ANSI / UTF-8)
- 와이드 바이트는 "한 문자가 일정 크기의 바이트의 배열로 표현됨" (UTF-16)


따라서 변환시

ANSI/UTF-8 to UNICODE => MultiByteToWideChar

UNICODE to ANSI/UTF-8 => WideCharToMultiByte



mb : multi byte character
wc : wide char
mbs : multibyte string
wcs : wide char string

반응형