Java 백그라운드 MySQL 데이터베이스에서 이모티콘을 지원하는 방법

1811 단어 javamysql이모티콘
앞말
회사에서 최근 개발 중에 문제가 생겼어요. 댓글의 게시와 답장을 하고 iOS와 안드로이드에서 표정을 추가할 때 오류가 나요.

Caused by: java.sql.SQLException: Incorrect string value: '\xF6\x9D\x98\x84' for column 'comment' at row 1
표정에 문제가 있다는 것을 알려주고 서둘러 자료를 찾아라.
우선 데이터베이스 인코딩은 UTF-8이고 필드 content는 로 설정됩니다text(CHARSET=utf8 COLLATE=utf8_unicode_ci) 게시물 내용 정보를 저장하는 데 사용됩니다. 현재 온라인에 올라온 새로운 기능은 이모티콘을 저장합니다. 이모티콘을 삽입하면 상기 오류가 발생합니다. UTF-8 인코딩은 두 개, 세 개, 네 바이트일 수 있습니다.이모티콘은 4바이트이고 Mysql의utf8은 최대 3바이트까지 인코딩되어 데이터가 삽입되지 않습니다.utf8mb4는utf8을 호환하고utf8보다 더 많은 문자를 표시할 수 있기 때문에 데이터베이스 인코딩을utf8mb4로 설정해야 합니다.
데이터베이스 인코딩utf8에서utf8mb4로 설정
1. 수정 my.cnf

[client]
default-character-set=utf8mb4
 
[mysql]
default-character-set=utf8mb4
 
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'
character-set-client-handshake = false
2. 데이터베이스와 관련된 테이블의 문자 집합 수정
데이터베이스를utf8mb4로 변환

ALTER DATABASE post CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
 
ALTER TABLE `post_article` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
 
ALTER TABLE `post_article` MODIFY COLUMN `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3. 데이터베이스 재시작

sudo /etc/init.d/mysql restart
4. 데이터베이스 문자 집합이utf8mb4인지 확인

SHOW VARIABLES WHERE Variable_name LIKE 'character%' OR Variable_name LIKE 'collation%';
5. 자바 설정
자바의 데이터베이스 연결을 설정하고 characterEncoding을 제거한 다음 mysqlconnector 버전이 5.1.13보다 높으면 OK
총결산
이상은 바로 이 글의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 일정한 도움을 줄 수 있기를 바랍니다. 만약에 의문이 있으면 여러분은 댓글을 남겨 교류할 수 있습니다. 저희에 대한 지지에 감사드립니다.

좋은 웹페이지 즐겨찾기