태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

'UTF-16'에 해당되는 글 1건

  1. 2008/07/19 유니코드에 대해...
스폰서 링크
역사적으로, 단일 통합시킨 문자셋을 만들려는 두개의 독립적인 시도가 있었다. 하 나는 국제 표준 기구(ISO)의 ISO 10646 프로젝트였으며, 다른 하나는 다중 언어 소프트웨어 제조사들의(초기에는 미국회사가 대부분이었 던) 컨소시움으로 구성된 유니코드 프로젝트였다. 운 좋게도, 두 프로젝트에 참여했던 참가회사들 모두 1991년경에 두개의 서로 다른 통합 문자셋은 세계가 원하는 바가 아니라는 것을 깨달았다. 그들은 함께 노력했으며 단일한 코드 테이블을 만들기 위해 함께 작업했다. 양 프로젝트 모두 여전히 존재하며 그들 각자의 기준을 독립적으로 공표한다. 그러나 유니코드 컨소시움과 ISO/IEC JTC1/SC2는 호환가능한 유니코드와 ISO 10646 기준의 코드 테이블을 유지하기로 합의했다. 그리고 그들은 더욱 발전적인 확장 기능을 위해 면밀히 협력하고 있다. 유니코드 1.1은 과거 ISO 10646-1:1993에 대응했고, 유니코드 3.0은 현재 ISO 10646-1:2000에 대응한다.

<주요 문자셋>

1. ASCII

0x00부터 0x7f까지 128 개의 문자열을 정의한 코드표. 1바이트에 글자 하나를 표현할 수 있으며, 알파벳만이 표현 가능하다.

2. MBCS
아스키로 표현할 수 없는 언어를 사용하기 위한 멀티바이트 문자 집합 (Multi Byte Character Set)을 말한다. KSC5601(완성형 코드)과 같은 코드 페이지를 지칭하며, 하나의 글자는 1바이트나 2바이트로 표현된다.

3. UCS2
Windows 프로그래밍에서 일반적으로 유니코드라고 불리고 있는 표현 방식이며 정확히는 Universal Character Set  의 약자 이며 0x0000부터 0xffff 까지 65536개의 문자를 표현할 수 있다. 유니코드에서는 이를 기본 언어판(BMP Basic Multilingual Plane) 이라고 정의한다.
UCS2 는 글자 하나를 무조건 2바이트로 표현하므로, MBCS 보다 언어를 처리하는데 훨씬 편하며 다국어 처리가 가능하다. UCS2 는 정확히는 유니코드의 모든 것이 아니며 그 중 많이 사용되는 기본 언어만을 모아 놓은 것이다.

4. UTF8 (UCS Transformation Format)
UCS2 는 BMP를 전부 표현 할 수 있지만, 기존의 ASCII 시스템과의 호환성이 없으므로 문제가 많으므로 기존의 ASCII 시스템과 호환이 되면서 BMP를 표현할 수 있는 인코딩 방식이다.
UTF8 은 기본적인 ASCII 는 1바이트를 표현하고, 0x0080~0xffff 까지는 2~3 바이트로 표현하는 방식을 사용한다.
단순히 http 와 같은 ascii 프로토콜에 데이터를 실어서 손쉽게 보낼 수 있으므로 ASCII 호환이 필요한 시스템에서 많이 사용되지만, 문자를 1~3 바이트로 표시하므로 문자열 자체를 다루기는 매우 어렵다. ( 모든 유니코드 영역을 다 표현할 경우 6바이트까지 사용되지만, 실제 정의된 영역을 표시하는데에는 4바이트까지만 사용된다. )

U-00000000 - U-0000007F:  0xxxxxxx
U-00000080 - U-000007FF:  110xxxxx 10xxxxxx
U-00000800 - U-0000FFFF:  1110xxxx 10xxxxxx 10xxxxxx
U-00010000 - U-001FFFFF:  11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
U-00200000 - U-03FFFFFF:  111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
U-04000000 - U-7FFFFFFF:  1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

( 주 : UTF8 에는 0xff와 0xfe가 나타나지 않으며, 문자열 중간에 0x00 도 나타나지 않는다. )

5. UCS4
문자 하나를 표시하는데 4바이트를 사용한다. 모든 유니코드 언어를 표시할 수 있다.

6. UTF-16
UTF8과 UCS2를 짬뽕한 형태라고 볼 수 있다. 기본적으로 언어 하나를 표시하는데 2바이트를 사용하므로 많은 부분이 UCS2 와 중복된다. ( ASCII 와 UTF-8 의 중복처럼 ) 하지만, UCS2 로 표현불가능한 1백만여자를 더 표시할 수 있다.

7. UTF-32
UCS4 의 부분집합으로 0x00000000~0x0010ffff 만을 사용한다.
UCS4 는 4바이트로 표현 가능한 모든 영역을 사용 가능하지만 UTF-32 는 실제 정의되어 있는 유니코드 영역만을 사용하기로 약속한 인코딩 방식이다. 실질적으로는 둘 다 동일 하다.

8. BOM ( Byte order mark )
유니코드 텍스트 파일 (UCS2, UTF8)이 일반적인 텍스트 파일과 다른 점은 시스템의 ENDIAN에 따라서 텍스트 파일의 저장방식이 바뀔 수 있다는 것이다. 예를 들어서 알파벳 “A”를 UCS2로 저장할 경우 텍스트 파일에는 리틀 엔디안의 경우 0x41 0x00 순서로 저장되고, 빅엔디안 에서는 0x00 0x41 로 저장된다. ( 둘 다 유니코드 표준에 맞다 )
그래서, 일부(MS)에서는 BOM 을 텍스트 파일의 맨 앞에 집어 넣어서 텍스트 파일의 엔디안 방식을 명시적으로 표시하는 방법을 사용한다. 위의 예를 들자면 0xff 0xfe 0x41 0x00 과 같이 맨 앞에 0xff 0xfe 가 있으면 리틀 엔디안으로 인식하는 것이다. ( 빅 엔디안의 경우는 반대로 0xfe 0xff 이다 )


<코드표>
http://www.unicode.org/charts/ : 각 나라별 코드범위와 정의된 문자를 볼 수 있다.

Posted by cncdenny