- 유니코드에 대하여...
유니코드는 문자 집합을 가진 테이블이다. (유니코드 테이블)
유니코드와 같은 역할을 하는 또 다른 유명한 문자 집합은 바로 아스키코드다. (아스키코드 테이블)
이 외에 여러가지 문자 집합을 가진 테이블이 존재한다.
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