MySQL 5.5.3부터 ‘utf8mb4’ 캐릭터셋을 지원합니다. 제 서버는 기존에 모두 ‘utf8_general_ci’로 설정이 되어 있어서 텍스트 저장 필드에 이모지가 들어가지 않았습니다. utf8은 3바이트까지 지원하는데 이모지는 4바이트이기 때문입니다.

그래서 모든 필드를 바꿀 수는 없고 해당 필드만 ‘utf8mb4_general_ci’로 변경했습니다. ‘utf8mb4_unicode_ci’로 해도 됩니다.

필드에 이모지가 잘 들어갑니다.

그런데 앱에서 보내온 이모지는 ‘????’로 변환되어 들어가더군요. CodeIgniter의 database.php의 캐릭터셋을 수정해야 합니다.


1
2
'char_set' => 'utf8mb4',
'dbcollat' => 'utf8mb4_general_ci',

제대로 동작합니다. ‘utf8_general_ci’만으로 구성된 DB들도 문제없이 동작하네요. 살펴보니 필드 하나만 변경해도 전체 콜레이션이 변경됨을 알 수 있었습니다. 물론 기존 utf8 필드들은 그대로 있고요.