Serach

2013년 11월 4일 월요일

Unicode ,UTF, Encoding의 개념

유니코드란

요약하면 컴퓨터에서 세계 각국의 언어를 통일된 방법으로 표현할 수 있게 제안된 국제적인 문자 코드 규약이다.


흔히 유니코드를 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 문자 인코딩|작성자 욱쓰

댓글 없음:

댓글 쓰기