트위터 데이터를 수집해 mysql db에 저장하는 중인데 종종 트윗 내용이 없는 현상이 있어 찾아보니
맨 앞에 4바이트 이모티컨을 사용해서 일어나는 일이었다. (이런 문자들 🍵🍶🍷🍸 )
4 byte character가 들어가면 그 이후의 내용이 잘리고 안 들어가고 있었던 것.
mysql 5.5 이상에서는 utf8 대신 utf8mb4 인코딩을 이용하면 된다고 해서 백업 후 설정 변경.
(collation은 utf8_general_ci 에서 utf8mb4_general_ci 로)
다행히 잘 작동하는 것 같다.
==
스택오버플로우에서 참고: http://stackoverflow.com/questions/30074492/what-is-the-difference-between-utf8mb4-and-utf8-charsets-in-mysql
설명에 따르면 기존 utf8에 비해 저장 용량도 차이가 안 나고 4 byte character를 지원해주는 것이라고 하니 써서 손해볼 것은 없을 것 같다.
앞으로 utf8mb4로 써야지..
==
MySQL 매뉴얼 참고: https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html
원래 utf8은 1-4바이트 문자로 설계됐는데 일반적인 문자는 3바이트에 들어가니까 편의상(아마 저장용량) 디폴트로 3바이트 문자까지만 지원되고 있었던 것. Supplementary character를 저장하려면 utf8mb4 charset을 이용하라고 되어있다.
More from my site
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Leave a Comment