10.3.1 문자 정의 배열
각각의 간단한 문자 세트는 sql/share/charsets
디렉토리에 구성 파일이 있습니다. MYSYS
라는 문자 세트의 경우 파일에는
의 이름을 붙일 수 있습니다. 이것은 MYSET
.xml<map>
배열 요소를 사용하여 문자 집합 등록 정보를 나열합니다. <map>
요소는 이러한 요소에 표시됩니다.
<ctype>
는 캐릭터마다 특성을 정의합니다.<lower>
와<upper>
는 소문자와 대문자를 나열합니다.<unicode>
는 8 비트 문자 값을 Unicode 값에 맵합니다.<collation>
요소는 비교 및 정렬에서 문자의 순서를 조합 순서마다 1 개의 요소로 보여줍니다. 문자 코드 자체가 순서를 제공하기 때문에 이진 데이터 정렬은<map>
요소는 필요하지 않습니다.
strings
디렉토리의 ctype-
파일에 구현 된 복잡한 문자 세트에는 MYSET
.cctype_
, MYSET
[]to_lower_
등의 해당 배열이 있습니다. 모든 복잡한 문자 세트가 모든 배열을 가지는 것은 아닙니다. 예를 들어, 기존의 MYSET
[]ctype-*.c
파일을 참조하십시오. 추가 정보는 strings
디렉토리의 CHARSET_INFO.txt
파일을 참조하십시오.
대부분의 배열은 문자 값으로 인덱싱 256 개의 요소가 있습니다. <ctype>
배열에 문자 값 + 1로 인덱스를 붙일 수있어 257 개의 요소가 있습니다. 이것은 EOF
를 처리하기위한 기존의 규칙입니다.
<ctype>
배열 요소는 비트 값입니다. 각 요소는 문자 집합의 단일 문자의 속성에 대해 설명합니다. 각 속성은 include/m_ctype.h
에 정의 된대로, 비트 마스크로 연결됩니다.
#define _MY_U 01 / * Upper case * / #define _MY_L 02 / * Lower case * / #define _MY_NMR 04 / * Numeral (digit) * / #define _MY_SPC 010 / * Spacing character * / #define _MY_PNT 020 / * Punctuation * / #define _MY_CTR 040 / * Control character * / #define _MY_B 0100 / * Blank * / #define _MY_X 0200 / * heXadecimal digit * /
특정 문자 <ctype>
값은 해당 문자에 적용 적용 가능한 비트 마스크 값의 결합이어야합니다. 예를 들어, 'A'
는 16 진수 ( _MY_X
)뿐만 아니라 대 ( _MY_U
)이기 때문에, 그 ctype
값은 다음과 같이 정의해야합니다.
ctype [ 'A + 1] = _MY_U | _MY_X = 01 | 0200 = 0201
m_ctype.h
의 비트 마스크 값은 8 진수 값이지만
에서 MYSET
.xml<ctype>
배열의 요소는 16 진수로 작성해야합니다.
<lower>
와 <upper>
배열은 문자 집합의 각 멤버에 대응하는 소문자와 대문자를 유지합니다. 예 :
lower [ 'A'] should contain 'a' upper [ 'a'] should contain 'A'
각 <collation>
배열은 비교 및 정렬에 어떻게 문자를 정렬 할 필요가 있는지를 나타냅니다. MySQL은이 정보의 값에 따라 문자를 정렬합니다. 경우에 따라서는이 <upper>
배열과 같고, 정렬에서 대소 문자가 구별되지 않는 것입니다. 또한 복잡한 정렬 규칙은 (복잡한 문자 세트의 경우) 섹션 10.3.2 "복잡한 문자 세트의 문자열 조합 지원" 에서 문자열 조합의 설명을 참조하십시오.