Loading...
MySQL 9.5 Reference Manual 9.5의 12.13.1 Character Definition Arrays의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
각 simple character set에는 sql/share/charsets 디렉터리에 configuration file이 있습니다. character set 이름이 _MYSYS_이면, file 이름은 MYSET.xml입니다. 이 file은 <map> array element를 사용하여 character set 속성을 나열합니다. <map> element는 다음 element 안에 나타납니다:
<ctype>는 각 character에 대한 attribute를 정의합니다.
<lower>와 <upper>는 소문자와 대문자 character를 나열합니다.
<unicode>는 8-bit character 값을 Unicode 값에 매핑합니다.
<collation> element는 비교 및 정렬을 위한 character ordering을 나타내며, collation당 하나의 element가 있습니다. binary collation은 character code 자체가 ordering을 제공하므로 <map> element가 필요 없습니다.
strings 디렉터리의 ctype-MYSET.c file로 구현된 complex character set의 경우, 이에 상응하는 array가 있습니다: ctype_MYSET[], to_lower_MYSET[], 등등. 모든 complex character set이 모든 array를 가지는 것은 아닙니다. 예시는 기존 ctype-*.c file을 참조하십시오. 추가 정보는 strings 디렉터리의 CHARSET_INFO.txt file을 참조하십시오.
대부분의 array는 character 값으로 인덱스되며 256개 element를 가집니다. <ctype> array는 character 값 + 1로 인덱스되며 257개 element를 가집니다. 이는 EOF를 처리하기 위한 레거시 관례입니다.
<ctype> array element는 bit 값입니다. 각 element는 character set에 있는 단일 character의 attribute를 설명합니다. 각 attribute는 include/m_ctype.h에 정의된 비트마스크와 연관됩니다:
1#define _MY_U 01 /* Upper case */ 2#define _MY_L 02 /* Lower case */ 3#define _MY_NMR 04 /* Numeral (digit) */ 4#define _MY_SPC 010 /* Spacing character */ 5#define _MY_PNT 020 /* Punctuation */ 6#define _MY_CTR 040 /* Control character */ 7#define _MY_B 0100 /* Blank */ 8#define _MY_X 0200 /* heXadecimal digit */
특정 character에 대한 <ctype> 값은 그 character를 설명하는, 해당하는 비트마스크 값들의 합집합이어야 합니다. 예를 들어, 'A'는 대문자 character(_MY_U)이면서 동시에 16진수 digit(_MY_X)이므로, 그 ctype 값은 다음과 같이 정의해야 합니다:
1ctype['A'+1] = _MY_U | _MY_X = 01 | 0200 = 0201
m_ctype.h의 비트마스크 값은 8진수 값이지만, MYSET.xml의 <ctype> array element는 16진수 값으로 작성해야 합니다.
<lower>와 <upper> array는 character set의 각 member에 대응하는 소문자와 대문자 character를 보관합니다. 예를 들어:
1lower['A'] should contain 'a' 2upper['a'] should contain 'A'
각 <collation> array는 비교 및 정렬 목적을 위해 character가 어떻게 정렬되어야 하는지를 나타냅니다. MySQL은 이 정보의 값에 기반하여 character를 정렬합니다. 어떤 경우에는 이것이 <upper> array와 동일하며, 이는 정렬이 대소문자를 구분하지 않음을 의미합니다. 보다 복잡한 정렬 규칙(복잡한 character set의 경우)에 대해서는 Section 12.13.2, “String Collating Support for Complex Character Sets”의 string collating 설명을 참조하십시오.
12.13 Adding a Character Set
12.13.2 String Collating Support for Complex Character Sets