기사 디렉토리
이모티콘 표현이 utf8 인코딩으로 저장된 경우MySQL 데이터베이스또는 MariaDB인 경우 표시할 수 없습니다.
데이터베이스에 입력한 Emoji 표현식이 물음표 문자가 되는 이유는 무엇입니까?
Emoji 표현식은 4바이트 문자이고 utf8 문자 세트는 1-3바이트의 문자만 지원하기 때문에 Emoji 표현식은 데이터베이스에 쓸 수 없습니다.
데이터베이스에 입력한 Emoji 표현이 물음표 문자가 되는 문제를 해결하려면?
2가지 솔루션이 있습니다.
- XNUMX바이트 문자를 사용자 지정 문자로 교체하여 텍스트를 수동으로 입력합니다.
- 수정 MySQL의 데이터베이스 문자 집합, 데이터베이스 문자 집합을 utf8에서 utf8mb4로 변경하고 1-4바이트 문자를 지원합니다.
사실 첫 번째 방법은 작업량이 너무 많아 바람직하지 않습니다.
MySQL 데이터베이스 문자 집합을 수정하는 두 번째 솔루션을 사용하는 것이 좋습니다.
MySQL 5.5.3 버전부터 데이터베이스는 4바이트의 utf8mb4 문자 집합을 지원할 수 있으며 한 문자는 최대 4바이트를 가질 수 있으므로 더 많은 문자 집합을 지원할 수 있으며 이모티콘 표현도 저장할 수 있습니다.
- MySQL 5.5.3 이후에는 기본적으로 utf8mb4 문자 집합으로 원활하게 업그레이드할 수 있습니다.
- 동시에 utf8mb4는 utf8 문자 집합과 호환됩니다.
- utf8 문자의 인코딩, 위치 및 저장은 utf8mb4에 있습니다.
- utf8 문자 집합과 동일하며 기존 데이터에 손상이 없습니다.
때문에phpMyAdmin을새로 생성된 데이터베이스에서 새로 생성된 테이블의 경우 기본 문자 인코딩은 다음과 같습니다.Latin1
- 이 인코딩은 중국어 및 이모티콘 표현을 삽입할 수 없습니다.
- 데이터베이스 문자 집합 및 테이블의 문자 집합 인코딩을 utf8mb4로 변경해야 합니다.
- 그런 다음 MySQL을 다시 시작하면 중국어 및 이모티콘 표현을 삽입할 수 있습니다.
MySQL 이모티콘 문자 문제 해결
1단계:MySQL 구성 파일 my.cnf 수정
- (Windows 서버는 my.ini,Linux서버는 my.cnf입니다)
- my.cnf 파일, 일반적으로
/etc/mysql/my.cnf위치. - CWP 제어판my.cnf 파일은
/etc/my.cnf위치.
찾으신 후 아래 내용을 아래 세 부분으로 추가해주세요 ▼
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4'
2단계:MySQL 데이터베이스 다시 시작
service mysqld restart
3단계: 문자 집합을 다시 확인하고 SQL 명령줄에 ▼ 입력
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';
▼ 다음 확인

다음 SQL 명령어 입력▼
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
다음과 같은지 확인하세요▼
+--------------------------+--------------------+ | Variable_name | Value | +--------------------------+--------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | collation_connection | utf8mb4_unicode_ci | | collation_database | utf8mb4_unicode_ci | | collation_server | utf8mb4_unicode_ci | +--------------------------+--------------------+
phpMyAdmin에서 새 데이터베이스를 생성한 후 다음을 수행해야 합니다.데이터베이스 코드 보기 ▼
SHOW CREATE DATABASE db_name;
- 如 :
SHOW CREATE DATABASE test;
데이터베이스 인코딩이 아닌 경우utf8mb4, 데이터베이스 문자 집합을 다음으로 수정해야 합니다.utf8mb4 .
데이터베이스 문자 집합을 utf8mb4로 수정하는 방법은 무엇입니까?
1단계: phpMyAdmin에서 현재 데이터베이스 이름을 클릭한 다음 SQL을 클릭합니다.
2단계: 다음 명령을 입력하여 데이터베이스 문자 집합을 다음으로 수정합니다.utf8mb4▼
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4
- 如 :
ALTER DATABASE test DEFAULT CHARACTER SET utf8mb4;
3단계:MySQL 데이터베이스 다시 시작
service mysqld restart
- 그게 다야
다음은 SQL 명령의 몇 가지 예입니다.
기본 문자 집합과 테이블의 모든 문자 열을 새 문자 집합으로 변경 ▼
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- 如 :
ALTER TABLE logtest CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
테이블의 기본 문자 집합만 수정하면 ▼
ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- 如 :
ALTER TABLE logtest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
필드의 문자 집합 수정 ▼
ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name
- 如 :
ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
테이블 코드 보기 ▼
SHOW CREATE TABLE tbl_name;
필드 코드 보기 ▼
SHOW FULL COLUMNS FROM tbl_name;
현재 데이터베이스 코드 보기 ▼
SHOW VARIABLES LIKE 'character_set_%';
- mysql-connector-java 드라이버 패키지는 5.1.13+에서 utf8mb4만 지원합니다.
희망 첸 웨이량 블로그( https://www.chenweiliang.com/ ) "Emoji를 MySQL에 저장하는 방법? 데이터베이스 입력 Emoji 표현 물음표 문자 문제"를 공유하여 도움이 되었습니다.
이 기사의 링크를 공유하는 것을 환영합니다:https://www.chenweiliang.com/cwl-26592.html
더 많은 숨겨진 트릭을 알아보려면🔑 Telegram 채널에 가입하세요!
마음에 드셨다면 공유하고 좋아요를 눌러주세요! 여러분의 공유와 좋아요는 저희의 지속적인 원동력이 됩니다!