Directorio de artigos
- 1 Por que a expresión Emoji introducida na base de datos convértese nun signo de interrogación?
- 2 Como resolver o problema de que a expresión Emoji introducida na base de datos se converta nun signo de interrogación?
- 3 Solución de problemas de caracteres MySQL Emoji
- 4 Como modificar o conxunto de caracteres da base de datos a utf8mb4?
Se a expresión Emoji se almacena na codificación utf8Base de datos MySQLou MariaDB, non se pode mostrar.
Por que a expresión Emoji introducida na base de datos convértese nun signo de interrogación?
Dado que as expresións emoji son caracteres de 4 bytes e o conxunto de caracteres utf8 só admite 1-3 bytes de caracteres, as expresións emoji non se poden escribir na base de datos.
Como resolver o problema de que a expresión Emoji introducida na base de datos se converta nun signo de interrogación?
Hai 2 solucións:
- Introduza o texto manualmente, substituíndo os caracteres de catro bytes por caracteres personalizados.
- modificar MySQL Conxunto de caracteres da base de datos, cambia o conxunto de caracteres da base de datos de utf8 a utf8mb4, admite caracteres de 1 a 4 bytes.
De feito, o primeiro método é demasiado traballo e non é aconsellable.
Recoméndase usar a segunda solución, modificar o conxunto de caracteres da base de datos MySQL.
A partir da versión MySQL 5.5.3, a base de datos pode admitir o conxunto de caracteres utf4mb8 de 4 bytes e un carácter pode ter ata 4 bytes, polo que pode admitir máis conxuntos de caracteres e tamén pode almacenar expresións Emoji.
- Despois de MySQL 5.5.3, basicamente pode actualizar sen problemas ao conxunto de caracteres utf8mb4.
- Ao mesmo tempo, utf8mb4 é compatible co conxunto de caracteres utf8.
- A codificación, a posición e o almacenamento dos caracteres utf8 están en utf8mb4.
- Igual que o conxunto de caracteres utf8, sen danos aos datos existentes.
Debido aphpMyAdminPara as táboas recentemente creadas nunha base de datos recentemente creada, a codificación de caracteres predeterminada é:Latin1
- Esta codificación non pode inserir expresións chinesas e emojis;
- Debe cambiar a codificación do conxunto de caracteres do conxunto de caracteres da base de datos e da táboa a utf8mb4;
- Despois, reinicia MySQL, podes inserir expresións chinés e emoji.
Solución de problemas de caracteres MySQL Emoji
Capitulo 1:Modifique o ficheiro de configuración de MySQL my.cnf
- (Windows server é my.ini,LinuxO servidor é my.cnf)
- my.cnf, normalmente en
/etc/mysql/my.cnf
posición. - Panel de control CWPO ficheiro my.cnf está en
/etc/my.cnf
posición.
Despois de atopalo, engade o seguinte contido nas seguintes tres partes ▼
[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'
Capitulo 2:Reinicie a base de datos MySQL
service mysqld restart
Paso 3: Comprobe o conxunto de caracteres de novo e introduza ▼ na liña de comandos SQL
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';
Comproba se o seguinte ▼
Introduza o seguinte comando SQL▼
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
Comproba se é o seguinte▼
+--------------------------+--------------------+ | 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 | +--------------------------+--------------------+
Despois de crear unha nova base de datos en phpMyAdmin, debesVer código da base de datos ▼
SHOW CREATE DATABASE db_name;
- 如:
SHOW CREATE DATABASE test;
Se a codificación da base de datos non éutf8mb4
, debe modificar o conxunto de caracteres da base de datos autf8mb4
.
Como modificar o conxunto de caracteres da base de datos a utf8mb4?
Paso 1: fai clic no nome da base de datos actual en phpMyAdmin e, a continuación, fai clic en SQL.
Paso 2: introduza o seguinte comando para modificar o conxunto de caracteres da base de datosutf8mb4
▼
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4
- 如:
ALTER DATABASE test DEFAULT CHARACTER SET utf8mb4;
Capitulo 3:Reinicie a base de datos MySQL
service mysqld restart
- Iso é.
Aquí tes algúns exemplos de comandos SQL:
Cambia o conxunto de caracteres predeterminado e todas as columnas de caracteres da táboa ao novo conxunto de caracteres ▼
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;
Se só modifica o conxunto de caracteres predeterminado da táboa▼
ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- 如:
ALTER TABLE logtest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
Modifica o conxunto de caracteres dun campo ▼
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;
Ver código da táboa ▼
SHOW CREATE TABLE tbl_name;
Ver códigos de campo ▼
SHOW FULL COLUMNS FROM tbl_name;
Ver código actual da base de datos ▼
SHOW VARIABLES LIKE 'character_set_%';
- O paquete de controladores mysql-connector-java só admite utf5.1.13mb8 en 4+
Blog de Hope Chen Weiliang ( https://www.chenweiliang.com/ ) compartiu "Como gardar Emoji en MySQL? Introduza a base de datos Emoji expresión problema do signo de interrogación", que é útil para vostede.
Benvido a compartir a ligazón deste artigo:https://www.chenweiliang.com/cwl-26592.html
Benvido á canle de Telegram do blog de Chen Weiliang para recibir as últimas actualizacións.
📚 Esta guía contén un gran valor, 🌟Esta é unha oportunidade rara, non a perdas! ⏰⌛💨
Comparte e da like se che gusta!
O teu compartir e gústame son a nosa motivación continua!