Emoji를 MySQL에 저장하는 방법 데이터베이스 입력 Emoji expression 물음표 문자 문제

이모티콘 표현이 utf8 인코딩으로 저장된 경우MySQL 데이터베이스또는 MariaDB인 경우 표시할 수 없습니다.

데이터베이스에 입력한 Emoji 표현식이 물음표 문자가 되는 이유는 무엇입니까?

Emoji 표현식은 4바이트 문자이고 utf8 문자 세트는 1-3바이트의 문자만 지원하기 때문에 Emoji 표현식은 데이터베이스에 쓸 수 없습니다.

데이터베이스에 입력한 Emoji 표현이 물음표 문자가 되는 문제를 해결하려면?

2가지 솔루션이 있습니다.

  1. XNUMX바이트 문자를 사용자 지정 문자로 교체하여 텍스트를 수동으로 입력합니다.
  2. 수정 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';

▼ 다음 확인

Emoji를 MySQL에 저장하는 방법 데이터베이스 입력 Emoji expression 물음표 문자 문제

다음 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만 지원합니다.

发表 评论

귀하의 이메일 주소는 공개되지 않습니다. 必填 项 已 用 * 标注

위쪽으로 스크롤