Solución:
1) Base de datos: cambie la intercalación predeterminada de la base de datos como utf8mb4
.
2) Tabla: Cambie la clasificación de la tabla como CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
.
Consulta:
ALTER TABLE Tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
3) Código:
INSERT INTO tablename (column1, column2, column3, column4, column5, column6, column7)
VALUES ('273', '3', 'Hdhdhdhhzhzhzzhjzj 我爱你 ❌', 49, 1, '2016-09-13 08:02:29', '2016-09-13 08:02:29')
4) Establecer utf8mb4
en conexión a la base de datos:
$database_connection = new mysqli($server, $user, $password, $database_name);
$database_connection->set_charset('utf8mb4');
Paso 1, cambie el juego de caracteres predeterminado de su base de datos:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
si la base de datos aún no se ha creado, créelo con las codificaciones correctas:
CREATE DATABASE database_name DEFAULT CHARSET = utf8mb4 DEFAULT COLLATE = utf8mb4_unicode_ci;
Paso 2, configure el juego de caracteres al crear la tabla:
CREATE TABLE IF NOT EXISTS table_name (
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;
o alterar la mesa
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE table_name MODIFY field_name TEXT CHARSET utf8mb4;
Tanto las bases de datos como las tablas debe tener juego de caracteres utf8mb4
y colación utf8mb4_unicode_ci
.
Al crear un nueva base de datos Deberías usar:
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Si tienes un base de datos existente y desea agregar soporte:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
También necesitas establecer el conjunto de caracteres y la colación correctos para tus mesas:
CREATE TABLE IF NOT EXISTS table_name (
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;
o cámbialo si tienes tablas existentes con muchos datos:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Tenga en cuenta que utf8_general_ci
ya no es la mejor práctica recomendada. Consulte las preguntas y respuestas relacionadas:
¿Cuál es la diferencia entre utf8_general_ci y utf8_unicode_ci en Stack Overflow?