메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

문자셋 character set

DB CAFE
Dbcafe (토론 | 기여)님의 2024년 10월 1일 (화) 23:43 판 (새 문서: == 문자셋 , 캐릭터셋 (character set) , 인코딩 (encoding)== === ANSI === * 미국 국립 표준 협회(American National Standards Institute, ANSI) 미국의 산업 표준을 제정하는 민간단체이며, 국제표준화기구 ISO에 가입되어 있다. * ANSI에서 제정된 표준을 ANSI라고 부르기도 한다. * 1918년 AESC란 이름으로 창설되었으나,1928년 ASA(American Standards Association)로 이름이 변경되다가 1969년 현재 이름인 AN...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

문자셋 , 캐릭터셋 (character set) , 인코딩 (encoding)

ANSI

  • 미국 국립 표준 협회(American National Standards Institute, ANSI) 미국의 산업 표준을 제정하는 민간단체이며, 국제표준화기구 ISO에 가입되어 있다. * ANSI에서 제정된 표준을 ANSI라고 부르기도 한다.
  • 1918년 AESC란 이름으로 창설되었으나,1928년 ASA(American Standards Association)로 이름이 변경되다가 1969년 현재 이름인 ANSI로 변경되었다.
  • ANSI가 제정한 표준 중 가장 유명한 것이 ASCII 코드다.

KO16KSC5601

  1. 한글 완성형 코드와 일치하며 일반적으로 많이 사용되는 2350자의 한글, 4888자의 한자와 히라카나, 카타카나, 그리고 영문 및 각종 기호들을 포함.

KO16MSWIN949

  1. MS사의 Windows Codepage 949번, 한글 코드 페이지를 따른 코드셋이 완성형(KO16KSC5601)을 포함하고 있으며, 추가로 현대 한글 조합으로 표현 할 수 있는 모든 가짓수에 해당하는 8822자의 한글을 추가해 포함하고 있다.
  2. KO16MSWIN949가 KO16KSC5601를 포함하고 있다고 봐도 무방함
  3. DB 마이그레이션 작업시 KO16KSC5601을 KO16MSWIN949 로 마이그레이션 할때는 크게 문제 되지 않음
  4. 반면, 반대로 작업 시에는 문제가 발생 할수 있음. 표기 할수 있는 글자 수의 차이 때문.

UTF8

  1. UTF8은 3byte 기준으로 문자열 저장
  2. 데이터 범위는 U+9999까지
  3. 그외 보충 문자열(Supplementary characters, 보조 문자) 는 U+ 10000에서 U+ 10FFFF까지 코드 포인트가 할당 된 문자까지 저장할 수 있는 타입

UTF8과 AL32UTF8 차이점

  1. AL32UTF8 은 U+ FFFF( 3byte 표현) 보다 큰 유니 코드 문자
  2. Compatibility Encoding Scheme for UTF-16: 8-Bit (CESU-8) 라고 표현
  3. AL32UTF8에 저장할 수 있는 4byte 문자에는 대표적으로 한자와 이모지가 있다.
    • U + 2070E : 𠜎
    • U+1F601 : 😁
 

UTF8 vs AL32UTF8 비교표

구분 UTF8 AL32UTF8
UNICODE Version 2.1 ~ 3.0 3.0~3.1
Oracle Version 8.0 ~ 9l >= 9i
Unicode Encoding UTF8 UTF8
보충, 보조문자열(Supplementary characters)지원 X O
oracle 8i 이하 client 지원 O X
가변넓이 1~3byte 1~4byte

 

  • 특이사항.
    • UTF8 -> AL32UTF8 Datadump로 이관 시 에러 발생, DataPump Export/Import 사용 필요.AL32UTF8를 이용할 때 이런 보충, 보조문자열을 지원하는지 테스트 하는 것이 중요
    • 실제 DB를 이용하는 어플리케이션( 프로그램/시스템 ) 에 문제가 없는지 확인이 필요
  • 참고로 mysql, mariadb에서 이런 문자셋을 utf8, utf8mb4라고 표현 함

문자셋에 따른 한글 정렬

KO16KSC5601에서 한글 정렬

  1. KO16KSC5601 에서는 한글 2350자의 바이너리 정렬 순서가 한글의 언어적 정렬 방식과 동일하다.
  2. 따라서, 단순히 Order by 명령만으로 정렬의 효과를 거둘 수 있다.
  3. 한자의 경우 한글 뒤에 한자의 음에 맞게 정렬이 된다.

이것은 단지 한글 2350자들과 한자 4888자의 정렬일뿐이며, 나머지 글자들에 대해서는 입출력도 불가능하다.

KO16MSWIN949에서 한글 정렬

  1. KO16MSWIN949 는 KO16KSC5601에서 지원되지 않는 8822자의 한글을 추가적으로 지원한다는 점에 KO16KSC5601의 대안으로 자주 이용되는 Character Set이다.
  2. 하지만, 총 11172자의 한글의 바이트 코드가 한글의 언어적 정렬 순서와 불일치 한다.

UTF8/AL32UTF8에서 한글 정렬

  1. UTF8 데이터베이스의 경우, 한글만을 고려하면 별다른 정렬 옵션이 필요없다. 왜냐하면 한글 11172자의 정렬 순서와 바이트 코드 정렬 순서가 일치하기 때문이다.
  2. 그러나 한자를 포함한다면 한자->한글 식으로 정렬이 된다.