올해 민음사 북클럽에 가입해서 활동중인데 그리 긴 글은 아니지만 이모지를 넣어서 글을 저장했다가,
이모지 이후의 글이 다 날아가고 저장되는 그런 참사를 격었다.. 흑
대충 캐릭터 셋 문제겠거나 생각은 했는데 확실하진 않아서 찾아봤다.
MySQL의 경우 UTF-8 이 3 바이트까지 밖에 표현하지 못 한다.
그러나, 이모지는 갯수가 늘어나면서 4바이트까지 표현하는 경우가 늘어났다.
그러면서 4바이트를 사용하는 이모지를 저장하게 되는 경우 이모지가 빈칸으로 저장되거나 깨져서 저장된다.
(MySQL은 왜 3바이트만 줬을까? 문자의 경우 3바이트로 처리가 모두 가능하다)
8.0 버전 이후로는 utf8mb4 로 기본 값 설정이 되어 있으므로 저장이 잘 된다.
그 전 버전이라면 캐릭터 셋을 변경해야 한다.
이미 사용중인 데이터베이스라면, 캐릭터셋 변경을 하더라도 기존 테이블, 데이터에는 영향을 주지 않는다
alter 명령어를 사용하여 기존 테이블 세팅을 변경해주어야 한다
정규식을 사용하여 이모지를 제거한 뒤 텍스트만 저장하는 방법을 사용하면 된다.
MySQL 은 DB, 테이블, 컬럼 각각 케릭터 셋팅을 할 수 있기 때문에 주의 해야 한다...!
MySQL 스키마 조회 명령어:
How do I see what character set a MySQL database / table / column is?
What is the (default) charset for: MySQL database MySQL table MySQL column
stackoverflow.com
정규식을 사용하여 이모지를 삭제하는 방법도 간단하다 생각했는데, 세상에 간단한 일은 하나도 없다... ㅎㅎ
자바에서 4 바이트 이모티콘을 처리하는 방법:
'IT > 기타' 카테고리의 다른 글
| 방송대학교 전자도서관 예약 순번 확인하는 법 (1) | 2025.04.11 |
|---|---|
| Edge IE 모드 개발자 모드 사용하는 법 (0) | 2024.10.23 |
| [기초CS] 0.1 + 0.1 == 0.2 는 왜 false 일까? (0) | 2023.04.24 |
| [기초CS] 컴퓨터는 사칙연산을 어떻게 할까? (0) | 2023.04.24 |
| 비밀번호, 주민등록번호는 어떻게 보내야 할까? (2) | 2023.03.24 |