다른 명령
문자셋 , 캐릭터셋 (character set) , 인코딩 (encoding)
ANSI
- 미국 국립 표준 협회(American National Standards Institute, ANSI) 미국의 산업 표준을 제정하는 민간단체이며, 국제표준화기구 ISO에 가입되어 있다. * ANSI에서 제정된 표준을 ANSI라고 부르기도 한다.
- 1918년 AESC란 이름으로 창설되었으나,1928년 ASA(American Standards Association)로 이름이 변경되다가 1969년 현재 이름인 ANSI로 변경되었다.
- ANSI가 제정한 표준 중 가장 유명한 것이 ASCII 코드다.
KO16KSC5601
- 한글 완성형 코드와 일치하며 일반적으로 많이 사용되는 2350자의 한글, 4888자의 한자와 히라카나, 카타카나, 그리고 영문 및 각종 기호들을 포함.
KO16MSWIN949
- MS사의 Windows Codepage 949번, 한글 코드 페이지를 따른 코드셋이 완성형(KO16KSC5601)을 포함하고 있으며, 추가로 현대 한글 조합으로 표현 할 수 있는 모든 가짓수에 해당하는 8822자의 한글을 추가해 포함하고 있다.
- KO16MSWIN949가 KO16KSC5601를 포함하고 있다고 봐도 무방함
- DB 마이그레이션 작업시 KO16KSC5601을 KO16MSWIN949 로 마이그레이션 할때는 크게 문제 되지 않음
- 반면, 반대로 작업 시에는 문제가 발생 할수 있음. 표기 할수 있는 글자 수의 차이 때문.
UTF8
- UTF8은 3byte 기준으로 문자열 저장
- 데이터 범위는 U+9999까지
- 그외 보충 문자열(Supplementary characters, 보조 문자) 는 U+ 10000에서 U+ 10FFFF까지 코드 포인트가 할당 된 문자까지 저장할 수 있는 타입
UTF8과 AL32UTF8 차이점
- AL32UTF8 은 U+ FFFF( 3byte 표현) 보다 큰 유니 코드 문자
- Compatibility Encoding Scheme for UTF-16: 8-Bit (CESU-8) 라고 표현
- 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에서 한글 정렬
- KO16KSC5601 에서는 한글 2350자의 바이너리 정렬 순서가 한글의 언어적 정렬 방식과 동일하다.
- 따라서, 단순히 Order by 명령만으로 정렬의 효과를 거둘 수 있다.
- 한자의 경우 한글 뒤에 한자의 음에 맞게 정렬이 된다.
이것은 단지 한글 2350자들과 한자 4888자의 정렬일뿐이며, 나머지 글자들에 대해서는 입출력도 불가능하다.
KO16MSWIN949에서 한글 정렬
- KO16MSWIN949 는 KO16KSC5601에서 지원되지 않는 8822자의 한글을 추가적으로 지원한다는 점에 KO16KSC5601의 대안으로 자주 이용되는 Character Set이다.
- 하지만, 총 11172자의 한글의 바이트 코드가 한글의 언어적 정렬 순서와 불일치 한다.
UTF8/AL32UTF8에서 한글 정렬
- UTF8 데이터베이스의 경우, 한글만을 고려하면 별다른 정렬 옵션이 필요없다. 왜냐하면 한글 11172자의 정렬 순서와 바이트 코드 정렬 순서가 일치하기 때문이다.
- 그러나 한자를 포함한다면 한자->한글 식으로 정렬이 된다.