티스토리 뷰

dev

UTF8과 AL32UTF8 차이점 비교

IT's me 2021. 3. 3. 01:19

얼마 전 , 비교적 최근 업무시간에 UTF8와 AL32UTF8에 대한 이야기가 나온적이 있다. 그냥 UTF8 종류 중 한개겠지라고 생각하고 넘기려다가 UTF8과 차이점이 무엇인지 비교되는 정보가 별로 없어서 간단하게 정리해본다.

UTF8과 AL32UTF8 차이점 비교

 

UTF8은 3byte 기준으로 문자열을 저장할 수 있다. 그 범위는 U+9999까지인데  AL32UTF8은 그 외 보충 문자열(Supplementary characters, 보조 문자) 는 U+ 10000에서 U+ 10FFFF까지 코드 포인트가 할당 된 문자까지 저장할 수 있는 타입이라고 생각하면 된다.  즉, U + FFFF( 3byte 표현) 보다 큰 유니 코드 문자다. 조금 유식하게 Compatibility Encoding Scheme for UTF-16: 8-Bit (CESU-8):라고 표현할 수 있다.

 

이런 AL32UTF8에 저장할 수 있는 4byte 문자에는 대표적으로 한자와 이모지가 있다.

 

U + 2070E : 𠜎

 

U+1F601 : 😁

 

이런 것들을 저장하기 위해서 오라클에서는 AL32UTF8을 사용해야 하는 것이다. 

 

오라클 DBMS 측면에서 보면 이런 UTF8 vs AL32UTF8 비교시트를 만들수 있겠다. 

 

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로 이관 시 에러 발생, Export/Import 사용 필요

 

AL32UTF8를 이용할 때 이런 보충, 보조문자열을 지원하는지 테스트 하는 것이 중요하다. 사실 사용자 입력을 통하게 되는 문자열 셋에만 거의 한자 내지 이모지, 특수문자의 4byte 유니코드 문자열이 필요할 터인데 

 

  • 실제 DB를 이용하는 어플리케이션( 프로그램/시스템 ) 에 문제가 없는지 확인이 필요하다.

 

참고로 mysql, mariadb에서 이런 문자셋을 utf8, utf8mb4라고 표현한다. 


댓글
최근에 올라온 글
최근에 달린 댓글