emoji 문자 표현하는 방법[MySQL]

BANGJH·2020년 1월 20일
1

## 문제
기존 MySQL에 한글 및 다른 언어가 깨지는 것을 처리하려면 character set을 utf8로 설정해야 했었다.
그렇다면 emoji같은 글자들은 어떨까?

character set이 utf8인 게시판에 emoji로 된 글을 남겨 보았다.

글자가 깨져 보일 것이다.

문제 발생 이유

UTF-8 은 1~4 Byte까지 저장이 가능하게 설계되어있다.(가변 바이트)

거기서 MySQL은 utf8이 3Byte까지 표현할 수 있다.

하지만 emoji는 4Byte로 되어 있는 문자이다.

3Byte까지 표현할 수 있는 MySQL의 utf8에 4Byte 문자를 표현하려고 하니 손실이 일어나 깨져 보이는 것이다.

해결

이런 문제를 해결하기 위해 MySQL에서 새로운 character set을 만들었으니 그것이 바로
4Byte까지 표현할 수 있는 utf8mb4이다.

tip

utf8의 3Byte 문제는 MySQL에만 있는 문제이다. 다른 DB는 문제가 없는 것으로 안다.

결론

emoji같은 4Byte문자를 MySQL에서 표현하려면 character set을 utf8mb4로 바꾸여야 한다.

기존 값의 손실이 있을까 걱정할 필요는 없다. 왜냐하면 3Byte를 4Byte로 늘리는 것이니까.

하지만 emoji나 기타 4Byte 문자를 사용하지 않을 거라면 그냥 utf8을 사용하는게 공간 절약 및 성능에 더 효과적일 것이다.

profile
안녕하세요 신입 웹개발자입니다.

0개의 댓글