[MariaDB] utf8mb4 란?

http://blog.lael.be/post/917

4바이트 UTF-8 문자열

MySQL에서 부랴부랴 원래의 설계대로 가변-4바이트 UTF-8 문자열을 저장할 수 있는 자료형을 추가했다.

2010년 3월 24일에 utf8mb4 라는 charset을 추가하였다. (MYSQL 5.5.3 에 추가됨)

(관련 : https://dev.mysql.com/doc/relnotes/mysql/5.5/en/news-5-5-3.html )

스크린샷 2015-03-07 오후 6.51.19

> 부연설명 : utf8 을 패치하지 않고 신규 charset으로 추가한 이유는, 이미 구축된 시스템에 영향을 미치기 때문이다.

즉, 이미 3칸을 저장공간으로 잡아두었기 때문에 4칸의 문자를 저장할 수 없음.

 

더 자세한 이론을 원하면 Wikipedia 의 Plane 항목을 읽어보길 바란다.

(어려움. 그냥 쓰윽 읽어보세요. http://en.wikipedia.org/wiki/Plane_(Unicode) )

 

Byte Test  는 라엘이가 만든 http://datalink.lael.be/qdic.kr/PHP-utf8_length.php 를 이용해보세요.

UTF-8 4바이트의 문자 복사하기 :  http://www.i18nguy.com/unicode/supplementary-test.html

현재 라엘이의 블로그도 utf8 로 설정되어있기 때문에 본문에 4byte 문자를 입력할 수 없었다. 위의 페이지에서 복사후 테스트 해 보자.

 

그리고 중요한 것!!! Emoji 문자열이 모두 4 Byte 이다!!

요즘 스마트폰에서 이미 있는 문자이고, 라엘이의 경우 운영체제로 Mac OS X 를 사용하는데,

Mac 에서 커멘드+컨트롤+스페이스를 입력하면 나오는 키보드이다.

– 참고 이미지 —
스크린샷 2015-03-07 오후 7.05.17

– 참고 이미지 –

 

즉 이러한 SMP (Supplementary Multilingual Plane) 를 처리하기 위해서

당신의 DBMS 가 utf8mb4 를 지원한다면 반드시 이것으로 지정하길 바란다.

 

Collation 도 설명해야 하는데 이것 또한 설명이 길어서 결론만 말해주고자 한다.

1) MySQL 5.5.3 이전 = utf8 charset 에, utf8_general_ci collation사용.

2) MySQL 이 최신일 때 = utf8mb4 charset 에, utf8mb4_unicode_ci collation 사용.