요약하면 컴퓨터에서 세계 각국의 언어를 통일된 방법으로 표현할 수 있게 제안된 국제적인 문자 코드 규약이다.
흔히 유니코드를 UTF-16LE로 착각하는데
유니코드는 컴퓨터에서 사용할 수 있게 표현된 것이 아니라 보다 추상적인 개념이다.
실제 이 유니코드를 컴퓨터에 사용하기 위해 변환 하는 것을 엔코딩(encoding)이라고 하며
이때 사용하는것이 우리가 흔히 말하는 UTF(Unicode Transformation Format)이다.
UTF는 8, 16, 32등 다양한 포멧이 존재하며 이 숫자는 각 포멧 내에서
문자열을 표현하는 비트를 나타낸다.
하나씩 자세히 살펴보면
UTF-8
UTF-8은 하나의 문자를 위해 1, 2, 3, 4바이트로 인코딩을 수행하는 가변 길이 문자 인코딩 방식이다.
ASCII 문자(첫128문자)들은 1바이트만으로 표시된다.
다음 1920문자(발음 구별 기호가 붙은 라틴,그리스,키릴,콥트 등의 문자 등)는 2바이트
나머지 문자들 중 BMP(Basic multilingual plane)안에 있는것은 3바이트, 아닌것은 4바이트로 표현된다.
4바이트로 표현되는 문자는 모두 기본 다국어 평면(BMP) 바깥의 유니코드 문자이며, 거의 사용되지 않는다.
UTF 8과16중 어느 인코딩이 더 적은 바이트를 사용하는지는 문자열에서 사용된 코드 포인트에 따라 달라진다.
이러한 방법은 영어에 있어 최상의 방법이다.
UTF-8은 매우 일반적인 인코딩 방식이지만 BMP를 벗어나는 문자를 많이 사용할 경우 비효율적이다.
UTF-16
기본 다국어 평면 (Basic multilingual plane)에 속하는 문자들은 그대로 16비트 값으로 인코딩이 되고,
그 이상의 문자는 특별히 정해진 방식으로 32비트로 인코딩이된다.
ISO 표준은 UCS-2 인코딩도 정의하며 여기선 BMP의 16비트 표현만을 다룬다.
기본 다국어 평면의 문자들은 곧바로 16비트 값으로 대응되어 인코딩되며,
이 경우에는 인코딩된 바이트 스트링의 엔디언만 주의하면 된다.
UTF-16LE, BE는 각각 Little-endian, Big-endian을 나타낸다.
전세계의 대부분의 언어가 16비트로 표현이 가능하기 때문에 윈도우는 UTF-16LE을 사용한다.
또한 이러한 장점으로 인해 프로그램 내에서 사용하는 문자열을 보다 쉽게 다른 언어로 변경할 수 있다.
UTF-16은 공간 절약과 코딩의 편의성 사이의 적절한 절충안이라 할 수 있다.
UTF-32
UTF-32는 모든 문자를 4바이트로 인코딩한다.
이러한 인코딩 방식은 문자변환 알고리즘을 간단히 구성하려 할 때나
가변 길이의 인코딩 방식을 사용하고 싶지 않은 경우에 유용하다.
예를 들어 UTF-32를 사용하면 모든 문자가 4바이트이므로 다른 대안에 대해 고려할 필요가 없다.
UTF-32는 메모리 사용에 있어 매우 비효율적인 인코딩 방식이기 때문에
파일 저장 방식이나 네트워크를 통한 전송 방식으로는 거의 사용되지 않는다.
이러한 인코딩 방식은 프로그램 내부에서만 사용되는 것이 일반적이다.
[출처] UTF-8, UTF-16, UTF-32 문자 인코딩|작성자 욱쓰
댓글 없음:
댓글 쓰기