행위

"문자셋 character set"의 두 판 사이의 차이

DB CAFE

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

2024년 3월 25일 (월) 13:57 판

thumb_up 추천메뉴 바로가기


1 문자셋 , 캐릭터셋 (character set)[편집]

1.1 ANSI[편집]

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

1.2 KO16KSC5601[편집]

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

1.3 KO16MSWIN949[편집]

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

1.4 UTF8[편집]

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

1.5 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 : 😁
 

1.5.1 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라고 표현 함

2 문자셋에 따른 한글 정렬[편집]

2.1 KO16KSC5601에서 한글 정렬[편집]

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

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

2.2 KO16MSWIN949에서 한글 정렬[편집]

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

2.3 UTF8/AL32UTF8에서 한글 정렬[편집]

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