와이드 캐릭터
Wide character이 글은 검증을 위해 인용구가 추가로 필요하다. – · · · · (2011년 2월) (이 템플릿 |
와이드 문자는 일반적으로 전통적인 8비트 문자보다 큰 크기를 갖는 컴퓨터 문자 데이터 유형이다. 데이터 유형 크기가 증가하면 더 큰 코드 문자 집합을 사용할 수 있다.
역사
1960년대 동안 메인프레임과 미니 컴퓨터 제조업체들은 8비트 바이트를 가장 작은 데이터 유형으로 표준화하기 시작했다. 7비트 ASCII 문자 집합은 텔레타이프 기계와 컴퓨터 단말기의 영숫자를 인코딩하는 업계 표준 방식이 되었다. 데이터 저장 및 전송의 무결성을 보장하기 위해 패리티에 추가 비트를 사용했다. 그 결과 8비트 바이트는 ASCII 문자를 메모리에 저장하는 컴퓨터 시스템의 사실상의 데이터 형식이 되었다.
이후 컴퓨터 제조업체들은 스페어 비트를 이용하여 제한된 영문자 집합 이상으로 ASCII 문자 집합을 확장하기 시작했다. IBM 코드 페이지 37, PETSCII, ISO 8859와 같은 8비트 확장이 일상화되면서 그리스어, 키릴어, 기타 여러 가지에 대한 단말기 지원을 제공하게 되었다. 그러나 그러한 확장은 지역별로 다르며 종종 병행하여 사용할 수 없다는 점에서 여전히 제한적이었다. 특수 변환 루틴을 사용하여 한 문자 집합에서 다른 문자 집합으로 변환해야 했으며, 대상 집합에 동일한 문자가 없을 때 종종 파괴적인 변환을 초래했다.
1989년 국제표준화기구는 16비트(2바이트) 또는 32비트(4바이트) 값을 사용하여 인코딩할 수 있는 다국어 문자 집합인 유니버설 문자 집합(UCS)에 대한 작업을 시작했다. 이 큰 값들은 메모리에 새로운 문자 값을 저장하기 위해 8비트보다 큰 데이터 형식을 사용해야 했다. 따라서 와이드 문자라는 용어는 전통적인 8비트 문자 데이터 유형과 구별하기 위해 사용되었다.
UCS 및 유니코드와의 관계
넓은 글자는 메모리에 있는 데이터 유형의 크기를 가리킨다. 문자 집합의 각 값이 어떻게 정의되는지는 명시되지 않는다. 대신 이러한 값은 문자 집합을 사용하여 정의되며, UCS와 유니코드는 단순히 8비트 와이드 숫자 값(총 255개)이 허용하는 것보다 더 많은 문자를 인코딩하는 두 개의 공통 문자 집합일 뿐이다.
멀티바이트 문자와의 관계
이전의 데이터 전송 시스템이 8비트 클린 데이터 경로의 부족으로 어려움을 겪었듯이, 현대의 전송 시스템도 문자 데이터에 대한 16비트 또는 32비트 데이터 경로에 대한 지원이 부족한 경우가 많다. 이로 인해 UTF-8과 같은 문자 인코딩 시스템은 하나의 8비트 기호에 비해 너무 큰 값을 인코딩하기 위해 여러 바이트를 사용할 수 있다.
C 표준은 각 문자(주로 소스 코드와 외부 파일에서 사용됨)를 나타내기 위해 고정 또는 가변 바이트 수를 사용하는 문자의 멀티바이트 인코딩과 단일 객체(일반적으로, 8비트 이상)의 런타임 표현인 와이드 문자를 구분한다.
와이드 문자 크기
UTF-16 little-endian은 Microsoft(및 Windows 운영 체제에서)의 인코딩 표준이다. 하지만 대리모 쌍의 경우 32비트도 지원한다.[1] .NET Framework 플랫폼은 UTF7, UTF8, UTF16, UTF32를 포함한 다중 와이드 문자 구현을 지원한다.[2]
자바 플랫폼은 넓은 문자 변수를 16비트 값으로 정의하고 UTF-16(이전의 UCS-2 사용으로 인한)을 사용해 문자를 인코딩하도록 요구하는 반면, 현대의 유닉스급 시스템은 일반적으로 인터페이스에서 UTF-8을 요구한다.
프로그래밍 세부 사항
C/C++
C 및 C++ 표준 도서관에는 넓은 문자와 그것들로 구성된 문자열을 처리하기 위한 많은 시설이 포함되어 있다. 데이터 유형을 사용하여 광범위한 문자를 정의함 wchar_t
, 원래의 C90 표준에서 다음과 같이 정의되었다.
- "지원되는 로케일 중 지정된 가장 큰 확장 문자 집합의 모든 멤버에 대해 값의 범위가 구별되는 코드를 나타낼 수 있는 통합형" (ISO 9899:1990 §4.1.5)
C와 C++ 모두 고정 크기 문자 유형 도입 char16_t
그리고 char32_t
2011년 16비트 및 32비트 유니코드 변환 형식을 모호하지 않게 나타내기 위해 각 표준을 개정하여 wchar_t
구현 정의의 ISO/IEC 10646:2003 유니코드 표준 4.0에 따르면 다음과 같다.
- "의 폭은
wchar_t
컴파일러 전용이며 8비트까지 작을 수 있다. 따라서 C또는 C++컴파일러를 통해 이동해야 하는 프로그램은 사용하지 마십시오.wchar_t
유니코드 텍스트 저장용. 그wchar_t
타입은 컴파일러 정의 와이드 문자를 저장하기 위한 것으로, 일부 컴파일러에서는 유니코드 문자일 수 있다."[3]
파이톤
Python의 설명서에 따르면, 그 언어는 때때로 wchar_t
그 성격 유형의 기초로서. Py_UNICODE
는 여부에 달려있다. wchar_t
"[4]선택한 파이썬 유니코드 빌드 변종과 호환된다"
참조
- ^ http://msdn.microsoft.com/en-us/goglobal/bb688113.aspx[데드링크]
- ^ https://msdn.microsoft.com/en-us/library/System.Text.aspx
- ^ "5.2 ANSI/ISO C wchar_t". The Unicode standard. Aliprand, Joan., Unicode Consortium. (Version 4.0 ed.). Boston: Addison-Wesley. 2003. p. 109. ISBN 0-321-18578-1. OCLC 52257637.CS1 maint: 기타(링크)
- ^ https://docs.python.org/c-api/unicode.html 2009-12-19년 검색