• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 1. 문자 세트 지원
    1. 일반 문자 집합 및 데이터 정렬
    2. MySQL에서의 문자 셋과 콜레션
    3. 문자 셋과 콜레션 지정
    4. 연결 문자 집합 및 데이터 정렬
    5. 응용 프로그램의 문자 집합 및 정렬 순서 구성
    6. 오류 메시지의 문자 세트
    7. 데이터 정렬 문제
    8. 문자열의 레퍼토리
    9. 문자 세트 지원의 영향을받는 연산
    10. Unicode 지원
    1. ucs2 문자 세트 (UCS-2 Unicode 인코딩)
    2. utf16 문자 세트 (UTF-16 Unicode 인코딩)
    3. utf16le 문자 세트 (UTF-16LE Unicode 인코딩)
    4. utf32 문자 세트 (UTF-32 Unicode 인코딩)
    5. utf8 문자 세트 (3 바이트 UTF-8 Unicode 인코딩)
    6. utf8mb3 문자 세트 (utf8의 별칭)
    7. utf8mb4 문자 세트 (4 바이​​트 UTF-8 Unicode 인코딩)
    11. 이전 Unicode 지원에서 현재 Unicode 지원으로 업그레이드
    12. 메타 데이터에 UTF-8
    13. 컬럼 문자 집합 변환
    14. MySQL에서 지원되는 문자셋과 콜레션
    2. 오류 메시지 언어 설정
    3. 문자 세트 추가
    4. 문자 세트에 데이터 정렬 추가
    5. 문자 세트 구성
    6. MySQL Server에서 시간대 지원
    7. MySQL Server의 로케일 지원
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

10.1.10.2 utf16 문자 세트 (UTF-16 Unicode 인코딩)

utf16 문자 세트는 보조 문자 인코딩을 가능하게하는 확장 기능을 갖춘 ucs2 문자 집합입니다.

  • BMP 문자의 경우 utf16 과 ucs2 동일한 코드 값 같은 인코딩 같은 길이라는 동일한 스토리지 특성이 있습니다.

  • 보조 문자의 경우 utf16 에는 32 비트를 사용하는 문자를 나타 내기위한 특수 시퀀스가 있습니다. 이것은 "대리"메커니즘이라고합니다. 0xffff 보다 큰 수치의 경우 10 비트를 확보하고 이들을 0xd800 에 추가하고 첫 16 비트로 배치합니다. 또한 10 비트를 확보하고 이들을 0xdc00 에 추가하고 다음 16 비트로 배치합니다. 따라서 모든 보조 문자 32 비트가 필요합니다. 이 중 첫 번째 16 비트는 0xd800 과 0xdbff 사이의 숫자이며, 나머지 16 비트는 0xdc00 과 0xdfff 사이의 숫자입니다. Unicode 4.0 문서의 " 15.5 Surrogates Area "에 예제가 포함되어 있습니다.

utf16 대리모를 지원하고 ucs2 을 지원하지 않기 때문에, utf16 에서만 적용되는 유효성 검사가 있습니다. 하위 surrogate가 없으면 상위 surrogate를 삽입 할 수없고 반대도 마찬가지입니다. 예 :

 INSERT INTO t (ucs2_column) VALUES (0xd800); / * legal * /
 INSERT INTO t (utf16_column) VALUES (0xd800); / * illegal * /

기술적으로 유효하지만 진정한 Unicode가 아닌 문자 (즉, Unicode가 "할당되지 않은 코드 포인트"또는 "개인 사용"문자, 심지어 0xffff 처럼 "불법"으로 간주 문자)에 대한 타당성 확인은 없습니다 . 예를 들어, U+F8FF 는 Apple의 로고이므로이 유효합니다.

 INSERT INTO t (utf16_column) VALUES (0xf8ff); / * legal * /

이러한 문자는 모든 사용자에게 동일한 의미를 갖게 기대할 수 없습니다.

MySQL은 최악의 경우 (문자가 4 바이트를 필요로하는 경우)에 대응할 필요가 있기 때문에, utf16 열 또는 인덱스의 최대 길이는 ucs2 열 또는 인덱스의 최대 길이의 절반 밖에 없습니다. 예를 들어, MySQL 5.6에서는 MEMORY 테이블 인덱스 키의 최대 길이는 3072 바이트이므로, 이러한 진술은 ucs2 및 utf16 컬럼에 대해 허용되는 최대 길이의 인덱스를 가진 테이블을 만듭니다.

 CREATE TABLE tf (s1 VARCHAR (1536) CHARACTER SET ucs2) ENGINE = MEMORY;
 CREATE INDEX i ON tf (s1);
 CREATE TABLE tg (s1 VARCHAR (768) CHARACTER SET utf16) ENGINE = MEMORY;
 CREATE INDEX i ON tg (s1);


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved