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 )
> 부연설명 : 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 에서 커멘드+컨트롤+스페이스를 입력하면 나오는 키보드이다.
– 참고 이미지 —
– 참고 이미지 –
즉 이러한 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 사용.