💾database

[Mysql] 데이터베이스에 이모지(이모티콘) 안들어가는 이슈 해결하기

pkyung 2024. 4. 2. 17:16
반응형

 

 

안녕하세요. 

 

 

진행하고 있는 프로젝트에서 친구에게 배타테스트를  진행했는데 편지지에 이모티콘이 들어가면 오류가 난다는 것을 알게되었습니다.

왜 이모티콘이 들어가지 않는걸까요? 인코딩은 모두 utf8로 설정했습니다. 

 

 

sql 에러는 아래와 같습니다. 

java.sql.SQLException: Incorrect string value: '\xF0\x9F\xA4\xAF' for column '칼럼명' at row 1

 

 

mysql은 이모티콘을 인코딩할 때, 4byte로 변환되는데 utf8 은 문자셋을 3byte까지만 지원하기 때문입니다. 

 

 

해결책

인코딩 방식을 utf8mb4로 변경해줍니다. 

ALTER TABLE 테이블명 MODIFY COLUMN 컬럼 VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci

 

utf8mb4는 4byte로 문자를 표현하여 전체 유니코드 범위 내의 문자를 지원하기 때문에 이모티콘 또한 저장할 수 있습니다. 

 

 

/etc/mysql/my.cnf 에 들어가서 default-character-set 또한, utf8mb4로 변경해주었습니다. 

vi /etc/mysql/my.cnf

 

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collaction-server = utf8mb4_unicode_ci
반응형