Caracteres
Unicode
Unicode es un estándar de codificación que asigna un número único (código de punto) a cada carácter de texto en casi todos los idiomas del mundo. Este sistema permite la representación y manipulación de texto de manera coherente, independientemente del idioma o la plataforma. Las codificaciones más comunes incluyen UTF-8, UTF-16 y UTF-32, siendo UTF-8 la más utilizada en la web.
El conjunto completo de los caracteres Unicode recogidos hasta el momento ocupa un máximo de 4 bytes para algunos caracteres, pero existe el conjunto reducido de BMP (Basic Multilingual Plane) que ocupa 3 bytes.
😀
U+1F600
F0 9F 98 80
D83D DE00
0001 F600
❤️
U+2764
E2 9D A4
2764
0000 2764
🌸
U+1F338
F0 9F 8C B8
D83C DF38
0001 F338
CHARACTER SET
Cuando se trabaja con bases de datos, la elección del conjunto de caracteres (CHARACTER SET) es crucial para almacenar y manejar texto adecuadamente. En MySQL, se pueden utilizar diferentes conjuntos de caracteres:
latin1: Este conjunto de caracteres es limitado y solo puede representar caracteres de Europa Occidental. Es adecuado para textos simples en idiomas como español o francés, pero no es adecuado para otros idiomas.
utf8: Aunque su nombre sugiere que es una implementación de UTF-8, en MySQL solo admite hasta tres bytes por carácter, lo que significa que no puede almacenar todos los caracteres posibles en Unicode.
utf8mb4: Esta es la versión completa de UTF-8 en MySQL, que permite almacenar todos los caracteres de Unicode, incluyendo emojis y caracteres de idiomas menos comunes.
Puedes consultar los conjuntos de caracteres disponibles:
SHOW CHARACTER SET;Al crear una base de datos en MySQL, se puede especificar el conjunto de caracteres. Por ejemplo, para crear una base de datos que use utf8mb4:
CREATE DATABASE mi_base_de_datos CHARACTER SET utf8mb4;Al crear una tabla, también se puede definir el conjunto de caracteres para las columnas específicas. Por ejemplo:
CREATE TABLE usuarios (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) CHARACTER SET utf8mb4,
email VARCHAR(255) CHARACTER SET utf8mb4
);En este caso, las columnas nombre y email estarán configuradas para soportar caracteres Unicode completos, incluyendo emojis.
COLLATE
COLLATE es el cotejamiento que se utiliza en una base de datos, siendo el criterio para comparar y ordenar caracteres, por ejemplo entre mayúsculas o minúsculas, tildes, etc.
Puedes consultar el cotejamiento:
SHOW COLLATION;
SHOW COLLATION LIKE 'utf8%';El cotejamiento puede ser:
case-sensitive (
_cs): Los caracteresayAson diferentes.case-insensitive (
_ci): Los caracteresayAson iguales.binary (
_bin): Dos caracteres son iguales si los valores de su representación numérica son iguales.
Al crear una base de datos, puedes especificar una collation. Por ejemplo:
CREATE DATABASE mi_base_de_datos CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Aquí, utf8mb4_unicode_ci es una collation que permite la comparación de caracteres de forma insensible a mayúsculas y minúsculas.
También puedes definir la collation al crear tablas. Por ejemplo:
CREATE TABLE productos (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
descripcion TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
);Podemos consultar el charset y el collate de una base de datos con unas variables especiales de MySQL:
USE database;
SELECT @@character_set_database, @@collation_database;Last updated