먼저 Unicode에 대해서 보면
Unicode
최초로 컴퓨터가 발명되고 오랜 기간 동안 발전되어 온 지역이 미국이기에 해당 지역에서 사용하는 언어의 문자 집합인 영어 알파벳과 이와 비슷한 문자 체계를 지닌 유럽어 알파벳 처리에 대한 연구가 가장 먼저 시작되었습니다. 이 외의 다른 문자 집합(character set)은 기존에 수립된 인코딩(영어 및 유럽어 문자 집합용)으로 표현하기에는 한계가 있었기 때문에 이들을 처리하기 위한 연구가 추가로 진행되었습니다.
- 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 표준
- 유니코드 협회에서 제정
- 유니코드란, 숫자와 글자, 즉 키와 값이 1:1로 매핑된 형태의 코드
- ISO 10646 문자 집합, 문자 인코딩 , 문자 정보 데이터베이스, 문자들을 다루기 위한 알고리즘 등을 포함 하고 있다
목적
- 기존 인코딩 방식은 다국적 환경에서 호환되지 않는 한계 존재
- 다양한 문자 집합들을 통합하는데 성공함 , 현존하는 문자 인코딩 방식을 모두 유니코드 방식으로 교체
기원
- 1987년 조 베커 와 리 콜린스 , 마크 데이비스가 통일된 문자 집합을 만드는 것을 탐구함
- 1988년 유니코드라는 이름의 국제/다언어 문자 인코딩 시스템(international/multilingual text character encoding system, tentatively called Unicode)을 위한 초안 출판
UTF
UTF는 몇 비트단위로사용해서 index를 나타낼것인가를 말한다.
UTF-8은 8bit씩 늘려가며 index를 나타낼꺼라는거고,
UTF-16은 16bit씩 index를 나타낼꺼고, UTF-32는 32bit씩 index를 나타낼꺼라는거다.
( 실상 UTF-16과 UCS-2는 같다고 볼 수 있다. 마찬가지로 UTF-32와 UCS-4도 마찬가지다. 하지만 unicode 3.1에 오면서 달라 졌다. )
- Unicode Transformation Format ( 유니코드 변환 형식)
- UTF-7 , UTF-8 , UTF-16 , UTF - 32 를 포함 여러 유형의 유니 코드 문자 인코딩
목적
- 한 문자를 한 바이트로 가정하였던 기존의 7비트 또는 8비트 시스템과 멀티 바이트로 된 문자 세트(유니코드 2바이트)
간의 호환성 및 변환을 위해 만들어짐
- 가변 길이 문자 인코딩 방식으로 부호길이(비트수)에 따라 UTF-8, UTF-16, UTF 32 등이 있음
간단하게 UTF의 종류에 대해 간단히 설명 하자면
UTF-7 - 각 문자에 대해 7 비트를 사용합니다. 유니 코드(UTF-7 형태) 인코딩이 필요한 전자 메일 메시지의 ASCII 문자를 나타내도록 설계되었습니다.
UTF-8 - 가장 일반적인 유니 코드 인코딩 유형입니다. 표준 영어 문자 및 기호에는 1 바이트, 추가 라틴 및 중동 문자에는 2 바이트, 아시아 문자에는 3 바이트를 사용합니다. 추가 문자는 4 바이트를 사용하여 나타낼 수 있습니다. UTF-8은 처음 128자를 동일한 값으로 매핑하므로 ASCII와 역 호환됩니다.
UTF-16 - 처음에는 UTF-16으로 모든 문자를 나타낼 수 있었으나,
( 2byte로 표현할 수 있는 index를 가진 문자 목록을 BMP Basic Multilingual Plane 라고 부른다. )
유니코드 4.0이 나오면서, 2byte로는 0x10FFFF 같은 값을 가리킬 수 없게 되었다.
그래서 UTF-16으로는 BMP에 있는 문자들은 2byte로 처리하고,
BMP보다 더 높은 index를 가지는 놈들은 4byte로 처리 한다.
문자 index 0x0000 부터 0xFFFF 까지는 2byte로 처리 하고
문자 index 0x10000 부터 0x1FFFF 까지는 4byte로 처리 된다.
UTF-32 - 각 문자를 4 바이트로 나타내는 멀티 바이트 인코딩입니다.
이 중 가장 일반적인 인코딩 유형인 UTF -8을 추가적으로 설명 하자면
UTF - 8
- Universal Coded Character Set +Transformation Format - 8 bit
- 유니코드를 위한 가변 길이 문자 인코딩 방식 중 하나로 , 켄 톰프슨과 롭파이크가 만듬
- 한 문자를 나타나는 데에 1~4 바이트까지를 사용 한다.
- 1바이트 영역은 아스키 코드와의 호환성
그리고 유니코드와 UTF-8 방식에는 차이가 있는데
1. 일반적으로 유니코드는 인터넷에 HTML 파일로 올리수 없으나 UTF-8은 웹페이지 작성에 사용할수 있다는 점
2. 유니코드에서는 문자열 길이 정보를 알수없지만 UTF -8 은 문자열 길이 정보를 알수있다. 이는 후에 디코딩과정에서 필요
정도가 있다.
유니코드와 UTF의 명확하게 차이는 알지 못했고 그냥 비슷한 정도로만 알고있었는데
쓰임에 있어서 차이가 있다는 것을 알게 되었다.
끄적끄적 REST API ? <1> (0) | 2019.03.12 |
---|---|
IP address (0) | 2018.07.10 |
Call by Value or Reference in JAVA (0) | 2018.07.02 |
3-WAY Handshake (0) | 2018.06.27 |
BASE64 (0) | 2018.06.25 |