확장 문자
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
확장 문자는 1960년대 8비트 바이트가 표준화되면서, 아스키 문자 집합을 넘어 다양한 문자를 표현하기 위해 사용된 개념이다. 초기에는 IBM 코드 페이지, PETSCI, ISO 8859와 같은 8비트 확장 방식이 사용되었으나, 지역적 제한과 호환성 문제로 인해 범용 문자 집합(UCS)의 필요성이 대두되었다. UCS는 16비트 또는 32비트 값을 사용하여 다국어 문자를 인코딩하며, 확장 문자라는 용어는 8비트 문자 자료형과 구분되어 사용된다. C/C++에서는 wchar_t, char16_t, char32_t 등의 데이터 형식을 통해 확장 문자를 지원하며, Python과 D 언어에서도 각기 다른 방식으로 확장 문자를 처리한다.
더 읽어볼만한 페이지
- C 프로그래밍 언어 - C (프로그래밍 언어)
C는 하드웨어 제어와 이식성이 뛰어난 고급 절차적 프로그래밍 언어로서, 다양한 분야에서 사용되며 후속 언어에 영향을 주었고, 성능과 효율성이 높지만 안전성 문제 개선이 필요한 언어이다. - C 프로그래밍 언어 - 헤더 파일
헤더 파일은 프로그래밍 언어에서 코드 재사용성, 모듈화, 컴파일 시간 단축에 기여하며 함수 프로토타입, 변수 선언 등을 포함하고 `#include` 지시어로 소스 코드에 포함되어 사용되는 파일이다. - C++ - 헤더 파일
헤더 파일은 프로그래밍 언어에서 코드 재사용성, 모듈화, 컴파일 시간 단축에 기여하며 함수 프로토타입, 변수 선언 등을 포함하고 `#include` 지시어로 소스 코드에 포함되어 사용되는 파일이다. - C++ - 소멸자 (컴퓨터 프로그래밍)
소멸자는 객체가 메모리에서 제거되기 직전에 호출되는 멤버 함수로, 객체 자원 해제 및 정리 작업을 수행하며, C++ 등 여러 언어에서 구현되고 메모리 누수 방지에 기여한다. - 문자 인코딩 - 유니코드
유니코드는 세계의 모든 문자를 하나의 컴퓨터 인코딩 표준으로 통합하기 위해 설계되었으며, 유니코드 컨소시엄에 의해 관리되고 UTF-8, UTF-16, UTF-32 등의 부호화 형식을 제공하지만, 일부 문자 표현 문제, 버전 간 비호환성, 레거시 인코딩과의 호환성 문제 등의 과제를 안고 있다. - 문자 인코딩 - UTF-8
UTF-8은 유니코드 문자를 표현하는 가변 길이 문자 인코딩 방식으로, ASCII 코드와 호환성을 유지하며 다양한 언어의 문자를 표현할 수 있도록 설계되었지만, 보안 문제점과 공간 효율성 측면에서 단점을 가진다.
확장 문자 |
---|
2. 역사
1989년에 국제 표준화 기구는 16비트(2바이트) 또는 32비트(4바이트) 값을 사용하여 인코딩할 수 있는 다국어 문자 집합인 유니버설 문자 집합(UCS) 작업을 시작했다.[1] 이러한 더 큰 값은 메모리에 새 문자 값을 저장하기 위해 8비트보다 큰 데이터 유형을 사용해야 했기 때문에, 와이드 문자라는 용어는 기존의 8비트 문자 데이터 유형과 구별하기 위해 사용되었다.[1]
C 언어 및 C++의 기본 실행 문자 집합은 일반적으로 ASCII의 서브셋 문자로 구성되지만, 실제 문자 코드가 무엇인지는 규정되어 있지 않다. 한자와 같은 확장 실행 문자 집합은 일반적으로 멀티바이트 문자로 취급되어 1글자를 구성하는 바이트 수가 가변 길이이며, 원래 1개의 문자이면서 여러 문자의 조합(또는 문자열)으로 취급해야 하는 등 불편함이 있었다. 이러한 문제를 해소하기 위해 1글자를 1개의 정수 값으로 처리할 수 있도록 하는 것을 목표로 한 것이 와이드 문자이다.
2. 1. 초기 발전
1960년대 동안 메인프레임 컴퓨터와 미니컴퓨터 제조업체들은 8비트 바이트를 최소 자료형으로 표준화하기 시작하였다. 그동안 7비트 아스키 문자가 인쇄 전신기, 컴퓨터 터미널의 영숫자 인코딩에 대한 산업 표준 방식으로 채택되어 있었다. 그 결과 8비트 바이트는 컴퓨터 시스템에서 ASCII 문자를 메모리에 저장하는 사실상의 자료형이 되었다.[1]나중에 컴퓨터 제조업체들은 제한된 영어 알파벳 문자 집합을 넘어서서 아스키 문자 집합을 확장하기 위한 여분의 비트를 이용하기 시작하였다. IBM 코드 페이지 37, PETSCI, ISO 8859와 같은 8비트 확장이 일반화되어 터미널에 그리스 문자, 키릴 문자 등의 문자 지원을 제공하게 되었다. 그러나 이러한 확장은 특정 지역에 국한된다는 단점이 있었고 동시에 사용할 수 없었다. 문자 집합마다 특수한 변환 루틴을 사용하여 변환해 주어야 했으므로 대상 집합에 존재하는 문자가 없을 때 이따금 변환을 실패하기도 했다.[1]
2. 2. 확장 ASCII의 등장
컴퓨터 제조업체들은 제한된 영어 알파벳 문자 집합을 넘어서는 문자 표현을 위해 확장 아스키를 개발했다. IBM 코드 페이지 37, PETSCI, ISO 8859 등이 일반화되어 그리스 문자, 키릴 문자 등 다양한 문자를 터미널에서 지원하게 되었다.[1] 그러나 이러한 확장은 특정 지역에 국한되었고 동시에 여러 문자 집합을 사용할 수 없다는 단점이 있었다. 다른 문자 집합으로 변환하려면 특수한 변환 루틴을 사용해야 했으며, 대상 집합에 해당 문자가 없는 경우 변환이 실패하는 경우도 있었다.[1]2. 3. 범용 문자 집합(UCS)의 등장
1989년에 국제 표준화 기구는 범용 문자 집합(UCS) 개발을 시작했다.[1] UCS는 16비트(2바이트) 또는 32비트(4바이트) 값을 사용하여 다국어 문자 집합을 인코딩할 수 있도록 설계되었다.[1] 8비트보다 큰 자료형을 사용하여 새로운 문자 값을 저장할 수 있게 되면서, 확장 문자라는 용어가 전통적인 8비트 문자 자료형과 구분되어 사용되기 시작했다.[1]3. UCS 및 유니코드와의 관계
와이드 문자는 메모리 내 데이터 타입의 크기를 나타낸다. 와이드 문자는 문자 집합 내 각 값의 정의 방식을 나타내지는 않는다. 이러한 값들은 대신 문자 집합을 사용하여 정의되며, UCS와 유니코드는 8비트 와이드 숫자 값(총 255개)으로 허용되는 것보다 더 많은 문자를 인코딩하는 두 가지 일반적인 문자 집합이다.[14]
`wchar_t` 형의 크기와 인코딩 형식은 운영체제에 따라 다르다. 예를 들어 Windows에서는 2바이트(16비트)의 UTF-16을 사용하며, 리눅스나 macOS에서는 4바이트(32비트)의 UTF-32를 사용한다. 하지만, 기타 환경에서도 유니코드를 사용한 인코딩 형식이라고 오해하거나 가정하여 프로그램이 만들어지는 경우가 있다. 이러한 프로그램은 유니코드를 사용한 인코딩 형식이라고 단정할 수 없는 일반적인 유닉스 등으로 이식할 때 문제가 발생한다. C99부터 `wchar_t`가 유니코드와 호환되는 경우 `__STDC_ISO_10646__`이 사전 정의되도록 정해져 있으며, C++11에서도 C99 호환의 정의된 매크로가 도입되었다.[16]
4. 멀티바이트 문자와의 관계
과거의 데이터 전송 시스템이 8비트 클린 데이터 경로가 부족하여 어려움을 겪었던 것처럼, 현대의 전송 시스템은 종종 문자 데이터에 대한 16비트 또는 32비트 데이터 경로를 지원하지 못한다. 이로 인해 단일 8비트 기호로는 너무 큰 값을 인코딩하기 위해 여러 바이트를 사용할 수 있는 UTF-8과 같은 문자 인코딩 시스템이 등장했다.
C 표준은 각 문자를 나타내기 위해 고정 또는 가변 개수의 바이트를 사용하는 문자의 '멀티바이트' 인코딩(주로 소스 코드 및 외부 파일에 사용)과 단일 객체 내의 문자의 런타임 표현(일반적으로 8비트보다 큼)인 '와이드 문자'를 구별한다. C 언어 및 C++의 기본 실행 문자 집합은 일반적으로 ASCII의 서브셋의 문자 종류로 구성되지만, 실제 문자 코드가 무엇인지는 규정되어 있지 않다.
한자와 같은 확장 실행 문자 집합은 일반적으로 멀티바이트 문자로 취급되지만, 1글자를 구성하는 바이트 수가 가변 길이이며, 원래 1개의 문자이면서 여러 문자의 조합(또는 문자열)으로 취급해야 하는 등 불편함이 있었다. 이러한 문제를 해소하기 위해 1글자를 1개의 정수 값으로 처리할 수 있도록 하는 것을 목표로 한 것이 와이드 문자이다.
5. 와이드 문자의 크기
초창기 UCS-2("유니코드 1.0")의 도입은 여러 플랫폼에서 UTF-16의 사용으로 이어졌다.[1][2][3] 마이크로소프트 윈도우, .NET, 자바에서는 16비트의 "와이드 문자" 형식을 사용하는 것이 일반적이다. 유닉스 계열 운영체제는 일반적으로 21비트 유니코드 코드 포인트를 수용하기 위해 32비트 `wchar_t`를 사용한다.[4]
와이드 문자 형식의 크기는 시스템이 처리할 수 있는 텍스트 인코딩의 종류를 결정하지 않으며, 변환은 가능하다.[5] 윈도우와 같이 유니코드 1.0의 영향을 받은 시스템은 주로 와이드 문자 단위로 구성된 "와이드 문자열"을 사용하는 경향이 있다. 반면에 유닉스와 같은 다른 시스템은 8비트 "좁은 문자열" 규칙을 유지하는 경향이 있으며, "와이드" 문자를 처리하기 위해 멀티바이트 인코딩(거의 보편적으로 UTF-8)을 사용한다.[5]
`wchar_t` 형의 크기와 인코딩 형식은 운영체제에 따라 다르다. 예를 들어, Windows에서는 2바이트(16비트)의 UTF-16이며, 리눅스나 macOS에서는 4바이트(32비트)의 UTF-32이다.
6. 프로그래밍 언어별 특징
C 및 C++ 표준 라이브러리는 와이드 문자 및 와이드 문자로 구성된 문자열을 처리하기 위한 다수의 기능을 포함하고 있다. 와이드 문자는 `wchar_t` 데이터 형식을 사용하여 정의되는데, 이는 C90 표준에서 "지원되는 로케일 간에 지정된 가장 큰 확장 문자 집합의 모든 멤버에 대한 고유 코드를 나타낼 수 있는 값 범위를 가진 정수형" (ISO 9899:1990 §4.1.5)으로 정의되었다.
C와 C++는 2011년 각 표준 개정판에서 16비트 및 32비트 유니코드 변환 형식을 명확하게 표현하기 위해 `char16_t` 및 `char32_t`를 도입했으며, `wchar_t`는 구현에 따라 정의되도록 남겨두었다. ISO/IEC 10646:2003 유니코드 표준 4.0에서는 `wchar_t`의 너비가 컴파일러별로 다르며 8비트만큼 작을 수 있어서, 모든 C 또는 C++ 컴파일러에서 이식 가능해야 하는 프로그램은 유니코드 텍스트를 저장하는 데 `wchar_t`를 사용해서는 안 된다고 명시하고 있다.[6]
파이썬은 문자 형식 `Py_UNICODE`의 기초로 `wchar_t`를 사용하기도 한다. 이는 사용 중인 파이썬 유니코드 빌드가 `wchar_t`와 호환되는지에 달려 있다.[22] 파이썬 3.3 버전부터는 문자열에 대한 가변 크기 UCS1/2/4 스토리지를 도입하고 `Py_UNICODE`를 `wchar_t`에 정식으로 별칭으로 지정하면서 이러한 구분이 폐지되었다.[8]
D 언어에는 char 외에 다음 두 가지 문자형이 있다.
6. 1. C/C++
C 및 C++ 표준 라이브러리는 와이드 문자 및 와이드 문자로 구성된 문자열을 처리하기 위한 다수의 기능을 포함하고 있다. 와이드 문자는 `wchar_t` 데이터 형식을 사용하여 정의되는데, 이는 원래 C90 표준에서 "지원되는 로케일 간에 지정된 가장 큰 확장 문자 집합의 모든 멤버에 대한 고유 코드를 나타낼 수 있는 값 범위를 가진 정수형" (ISO 9899:1990 §4.1.5)으로 정의되었다.C와 C++는 2011년 각 표준 개정판에서 16비트 및 32비트 유니코드 변환 형식을 명확하게 표현하기 위해 고정 크기 문자 형식 `char16_t` 및 `char32_t`를 도입했으며, `wchar_t`는 구현에 따라 정의되도록 남겨두었다. ISO/IEC 10646:2003 유니코드 표준 4.0에서는 `wchar_t`의 너비가 컴파일러별로 다르며 8비트만큼 작을 수 있어서, 모든 C 또는 C++ 컴파일러에서 이식 가능해야 하는 프로그램은 유니코드 텍스트를 저장하는 데 `wchar_t`를 사용해서는 안 된다고 명시하고 있다.[6]
C 언어에서는 1995년 ISO/IEC 9899/AMD1:1995부터 `wchar_t` 형, <wchar.h>, <wctype.h> 등의 헤더 파일이 추가되었다. 와이드 문자는 `wchar_t`라는 데이터 형으로 표현한다. `char`형을 사용한 문자 및 문자열의 경우, 문자 상수[10] 및 문자열 리터럴[11]은 소스 코드 내에서 각각 "'c'" 및 ""str""로 표기한다. 이에 대응하여 와이드 문자 상수는 대문자 L을 접두사로 붙여 "L'c'"로 표기한다. 마찬가지로, 와이드 문자로 구성된 문자열을 와이드 문자열이라고 부르며, 그 리터럴은 "L"str""로 표기한다.
C 언어에서의 `wchar_t`는 단순한 `typedef`에 의한 별칭이지만, C++에서는 키워드(예약어)이다. 컴파일러에 따라 "wchar_t"를 내장형으로 간주할지 여부를 컴파일러 설정으로 전환할 수 있다[12]. C++의 경우, 문자 상수라는 용어는 없고, 문자 리터럴이라고 불린다[13].
C99 규격 및 C++98 규격의 경우, 와이드 문자 상수·문자열 리터럴에는 ISO 10646 문자 집합의 수치로 표현하는 유니버설 문자명을 사용할 수도 있다. 와이드 문자 문제는 자료형의 크기나 인코딩 형식이 규정되어 있지 않아 플랫폼 및 처리 시스템에 종속적이라는 점이다. 유니코드가 보급되면서 이식성 문제가 표면화되었다.
2011년에 개정된 C/C++ 표준 규격인 C11과 C++11에서는 새롭게 두 개의 문자형 `char16_t`와 `char32_t`가 도입되었다. 이들은 각각 UTF-16과 UTF-32를 내부 표현으로 사용한다. `u'c'` 또는 `U'c'`, 혹은 `u"str"` 또는 `U"str"` 처럼 소문자 `u` 또는 대문자 `U`를 앞에 붙여 각각 `char16_t`와 `char32_t`의 문자 상수, 문자열 리터럴을 표현한다. 또한 `u8`을 앞에 붙여 UTF-8 문자열 리터럴을 표현하지만[17], C++17까지는 `char8_t`형이 존재하지 않아 기존의 `char`형으로 대체하는 사양이었다. C++20에서는 `char8_t`형이 지원되면서 UTF-8 문자 리터럴 및 문자열 리터럴의 자료형이 변경되었다.[18]
C 언어의 경우 `char16_t` 및 `char32_t`는 각각 `uint_least16_t` 및 `uint_least32_t`의 typedef 별칭이지만, C++의 경우 `char16_t` 및 `char32_t`는 키워드이며, 각각 `std::uint_least16_t` 및 `std::uint_least32_t`와 같은 크기이지만 다른 자료형으로 규정되어 있다[19].
6. 1. 1. C/C++ 코드 예시
cwchar_t myChar1 = L'Ω';
wchar_t myChar2 = 0x2126; // UTF-16을 이용하여 문자 Ω를 16진으로 변환한다.
wchar_t myString1[] = L"♠♣♥♦";
wchar_t myString2[] = { 0x2660, 0x2661, 0x2662, 0x2663, 0x0000 };
// UTF-16을 이용하여 NULL 종단 문자 ♠♣♥♦을 16진으로 변환한다.
printf("문자열 값은 다음과 같다: %ls \n",myString1);
wprintf(L"문자열 값은 다음과 같다: %s \n",myString2);
```
C 및 C++ 표준 라이브러리는 와이드 문자 및 와이드 문자로 구성된 문자열을 처리하기 위한 다수의 기능을 포함하고 있다. 와이드 문자는 `wchar_t` 데이터 형식을 사용하여 정의되는데, 이는 원래 C90 표준에서 다음과 같이 정의되었다.
> "지원되는 로케일 간에 지정된 가장 큰 확장 문자 집합의 모든 멤버에 대한 고유 코드를 나타낼 수 있는 값 범위를 가진 정수형" (ISO 9899:1990 §4.1.5)
C와 C++는 2011년 각 표준 개정판에서 16비트 및 32비트 유니코드 변환 형식을 명확하게 표현하기 위해 고정 크기 문자 형식 `char16_t` 및 `char32_t`를 도입했으며, `wchar_t`는 구현에 따라 정의되도록 남겨두었다. ISO/IEC 10646:2003 유니코드 표준 4.0에서는 다음과 같이 말한다.
> "`wchar_t`의 너비는 컴파일러별로 다르며 8비트만큼 작을 수 있습니다. 따라서 모든 C 또는 C++ 컴파일러에서 이식 가능해야 하는 프로그램은 유니코드 텍스트를 저장하는 데 `wchar_t`를 사용해서는 안 됩니다. `wchar_t` 형식은 일부 컴파일러에서 유니코드 문자가 될 수 있는 컴파일러 정의 와이드 문자를 저장하기 위한 것입니다."[6]
6. 2. Python
파이썬은 문자 형식 `Py_UNICODE`의 기초로 `wchar_t`를 사용하기도 한다. 이는 사용 중인 파이썬 유니코드 빌드가 `wchar_t`와 호환되는지에 달려 있다.[22] 파이썬 2.7 버전에서는 `wchar_t`를 `Py_UNICODE`의 기초로 사용하는 것이 시스템에서 `wchar_t`가 "선택된 파이썬 유니코드 빌드 변형과 호환되는지"에 따라 달라졌었다.[7]파이썬 3.3 버전부터는 문자열에 대한 가변 크기 UCS1/2/4 스토리지를 도입하고 `Py_UNICODE`를 `wchar_t`에 정식으로 별칭으로 지정하면서 이러한 구분이 폐지되었다.[8] 파이썬 3.12 버전부터는 파이썬 문자열(구현에서 wstr)에 대한 `wchar_t` (즉, `Py_UNICODE` typedef)의 사용이 중단되었으며, 이전과 마찬가지로 "UTF-8 표현이 필요에 따라 생성되어 유니코드 객체에 캐시된다."[9]
6. 3. D 언어
D 언어에는 char 외에 다음 두 가지 문자형이 준비되어 있다.7. char16_t, char32_t형 (C/C++)
2011년에 개정된 C/C++ 표준 규격인 C11과 C++11에서는 `char16_t`와 `char32_t`라는 두 개의 새로운 문자형이 도입되었다. 이들은 각각 UTF-16과 UTF-32를 내부 표현으로 사용한다. `u'c'` 또는 `U'c'`, `u"str"` 또는 `U"str"`처럼 소문자 `u` 또는 대문자 `U`를 앞에 붙여 각각 `char16_t`와 `char32_t`의 문자 상수, 문자열 리터럴을 표현한다.[17]
C 언어의 경우 `char16_t` 및 `char32_t`는 각각 `uint_least16_t` 및 `uint_least32_t`의 typedef 별칭이지만, C++의 경우 `char16_t` 및 `char32_t`는 키워드이며, 각각 `std::uint_least16_t` 및 `std::uint_least32_t`와 같은 크기이지만 다른 자료형으로 규정되어 있다.[19]
어느 언어에서든 `char16_t`형의 크기는 16비트보다 클 수 있지만, 저장되는 값은 16비트 폭이다.[20] 마찬가지로 `char32_t`형의 크기는 32비트보다 클 수 있지만, 저장되는 값은 32비트 폭이다.[21]
8. wchar_t형 (C/C++)
C 언어에서는 1995년 ISO/IEC 9899/AMD1:1995부터 `wchar_t` 형, <wchar.h>, <wctype.h> 등의 헤더 파일이 추가되었다.[10] 와이드 문자는 `wchar_t`라는 데이터 형으로 표현한다. `char`형을 사용한 문자 및 문자열의 경우, 문자 상수 및 문자열 리터럴은 소스 코드 내에서 각각 "'c'
" 및 ""str"
"로 표기한다. 이에 대응하여 와이드 문자 상수는 대문자 L을 접두사로 붙여 "L'c'
"로 표기한다. 마찬가지로, 와이드 문자로 구성된 문자열을 와이드 문자열이라고 부르며, 그 리터럴은 "L"str"
"로 표기한다. 기존 문자 상수는 `int` 형이었지만, 와이드 문자 상수는 `wchar_t` 형을 가진다. 기존 문자열 리터럴은 `char[]` 형이었지만, 와이드 문자열 리터럴은 `wchar_t[]` 형을 가진다.
C 언어에서의 `wchar_t`는 단순한 `typedef`에 의한 별칭 (다른 형의 별명으로 정의되어 있음)이지만, C++에서는 키워드 (예약어)이다.[12] 컴파일러에 따라 "wchar_t
"를 내장형으로 간주할지 여부를 컴파일러 설정으로 전환할 수 있는 것도 있다. 또한 C++의 경우, 문자 상수라는 용어는 없고, 문자 리터럴 (character literal)이라고 불린다.[13] 문자 리터럴은 `char` 형을 가지며, 와이드 문자 리터럴은 `wchar_t` 형을 가진다. 문자열 리터럴은 `const char[]` 형을 가지며, 와이드 문자열 리터럴은 `const wchar_t[]` 형을 가진다.
C99 규격 및 C++98 규격의 경우, 와이드 문자 상수·문자열 리터럴에는 ISO 10646 문자 집합의 수치로 표현하는 유니버설 문자명을 사용할 수도 있다.
`char`형의 크기는 항상 1바이트임이 C/C++ 표준에 의해 보장된다.[14] 즉, `sizeof(char) == 1`은 항상 참이다.
한편, `wchar_t` 형은 C 및 C++ 양쪽의 표준 규격에서 부호가 있는 경우 적어도 -127부터 +127까지, 부호가 없는 경우 적어도 0부터 255까지의 범위를 표현할 수 있는 수치형[15]이라고만 정해져 있다(적어도 `char`형과 같은 크기가 필요하다). `char`가 ASCII라고 단정할 수 없거나, `float`나 `double`이 IEEE 754의 단정밀도·배정밀도일 필요가 없는 것과 마찬가지로, `wchar_t`의 내부 표현도 유니코드일 필요는 없다. 본래는 코드 집합 독립이다.
`wchar_t` 형의 크기와 인코딩 형식은, 예를 들어 Windows에서는 2바이트 (16비트)의 UTF-16이며, 리눅스나 macOS에서는 4바이트 (32비트)의 UTF-32이다. 하지만, 기타 환경에서도 유니코드를 사용한 인코딩 형식이라고 오해하거나, 가정하여 프로그램이 만들어지는 경우가 있다. 그러한 프로그램은, 유니코드를 사용한 인코딩 형식이라고 단정할 수 없는 일반적인 유닉스 등으로 이식할 때 문제가 발생한다. C99부터, `wchar_t`가 유니코드와 호환되는 경우, `__STDC_ISO_10646__`이 사전 정의되도록 정해져 있다. C++11에서도 C99 호환의 정의된 매크로가 도입되었다.[16]
참조
[1]
웹사이트
Globalization Step-by-Step: Unicode Enabled
http://msdn.microsof[...]
[2]
웹사이트
String Class (System)
https://learn.micros[...]
[3]
웹사이트
Primitive Data Types (The Java™ Tutorials > Learning the Java Language > Language Basics)
https://docs.oracle.[...]
[4]
웹사이트
Null-terminated wide strings
[5]
웹사이트
UTF-8 Everywhere
http://utf8everywher[...]
[6]
서적
The Unicode standard
https://www.worldcat[...]
Addison-Wesley
2003
[7]
웹사이트
Unicode Objects and Codecs — Python 2.7 documentation
https://docs.python.[...]
2009-12-19
[8]
웹사이트
Unicode Objects and Codecs — Python 3.10.10 documentation
https://docs.python.[...]
2023-02-18
[9]
웹사이트
Unicode Objects and Codecs
https://docs.python.[...]
2023-09-09
[10]
웹사이트
文字定数 - cppreference.com (C)
https://ja.cpprefere[...]
[11]
웹사이트
文字列リテラル - cppreference.com (C)
https://ja.cpprefere[...]
[12]
웹사이트
"/Zc:wchar_t (wchar_t Is Native Type) | Microsoft Docs"
https://docs.microso[...]
[13]
웹사이트
文字リテラル - cppreference.com (C++)
https://ja.cpprefere[...]
[14]
문서
[15]
문서
[16]
웹사이트
C99互換で導入された定義済みマクロ - cpprefjp C++日本語リファレンス
https://cpprefjp.git[...]
[17]
웹사이트
文字列リテラル - cppreference.com (C++)
https://ja.cpprefere[...]
[18]
웹사이트
UTF-8エンコーディングされた文字の型として`char8_t`を追加 [P0482R6] - cpprefjp C++日本語リファレンス
https://cpprefjp.git[...]
[19]
웹사이트
基本型 - cppreference.com
https://ja.cpprefere[...]
[20]
웹사이트
char16_t - cppreference.com
https://ja.cpprefere[...]
[21]
웹사이트
char32_t - cppreference.com
https://ja.cpprefere[...]
[22]
웹사이트
http://docs.python.o[...]
2009-12-19
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com