Guía de búsqueda y uso de Emoji: desde la codificación Unicode hasta la compatibilidad multiplataforma
Codificación Unicode de Emoji
Rangos de codificación
| Rango | Bloque Unicode | Ejemplo |
|---|---|---|
| U+1F600 - U+1F64F | Emoticons | 😀😁😂 |
| U+1F300 - U+1F5FF | Misc Symbols & Pictographs | 🎨🌟🌀 |
| U+1F680 - U+1F6FF | Transport & Map | 🚀🚗🚲 |
| U+1F900 - U+1F9FF | Supplemental Symbols & Pictographs | 🤖🦊🦁 |
| U+1FA00 - U+1FA6F | Chess Symbols | 🪀🪁🪂 |
| U+1FA70 - U+1FAFF | Symbols & Pictographs Extended-A | 🪩🪫🪬 |
Representación de codificación
// Punto de código Unicode
console.log('\u{1F600}'); // 😀
console.log('\u{1F680}'); // 🚀
// Consulta de punto de código
console.log('😀'.codePointAt(0).toString(16)); // "1f600"
// Crear desde punto de código
String.fromCodePoint(0x1F600); // "😀"
String.fromCodePoint(0x1F680); // "🚀"
Longitud de codificación UTF-8
// Emoji ocupa 4 bytes en UTF-8
new TextEncoder().encode('😀').length; // 4
// Pero .length devuelve 2 (par sustituto)
'😀'.length; // 2
// Contar caracteres correctamente
[...'😀😁😂'].length; // 3
Modificadores de tono de piel
5 tonos de piel
U+1F3FB 🏻 Tono claro (Light Skin Tone)
U+1F3FC 🏼 Tono medio-claro (Medium-Light)
U+1F3FD 🏽 Tono medio (Medium)
U+1F3FE 🏾 Tono medio-oscuro (Medium-Dark)
U+1F3FF 🏿 Tono oscuro (Dark)
Combinación
Emoji base + Modificador de tono de piel = Emoji con tono de piel
👨 + 🏽 = 👨🏽
👋 + 🏿 = 👋🏿
// Combinación en JavaScript
const base = '\u{1F468}'; // 👨
const modifier = '\u{1F3FD}'; // 🏽
const result = base + modifier; // 👨🏽
// Descomposición
[...'👨🏽']; // ['👨', '🏽']
Secuencias de unión de ancho cero (ZWJ)
ZWJ (U+200D) combina múltiples Emoji en uno:
👨 + ZWJ + 🏭 = 👨🏭 (Trabajador de fábrica)
👩 + ZWJ + 💻 = 👩💻 (Mujer tecnóloga)
👨 + ZWJ + ❤️ + ZWJ + 👨 = 👨❤️👨 (Pareja de hombres)
Combinaciones familiares
👨 + ZWJ + 👩 + ZWJ + 👦 = 👨👩👦 (Familia de tres)
👨 + ZWJ + 👨 + ZWJ + 👧 = 👨👨👧 (Dos papás y una hija)
Combinaciones de banderas
🇨 + 🇭 = 🇨🇭 (Bandera de Suiza)
🇯 + 🇵 = 🇯🇵 (Bandera de Japón)
🇨 + 🇳 = 🇨🇳 (Bandera de China)
Los Emoji de banderas están compuestos por dos indicadores regionales (Regional Indicator).
Diferencias de visualización multiplataforma
| Emoji | Apple | Microsoft | Samsung | ||
|---|---|---|---|---|---|
| 😀 | Estilo 😁 | Estilo 😁 | Estilo 😁 | Estilo 😁 | Estilo 😁 |
| 🔫 | Pistola de agua | Pistola de agua | Pistola real | Pistola de agua | Pistola de agua |
El mismo Emoji tiene aspecto diferente en distintas plataformas, pero el punto de código Unicode es el mismo.
Recomendaciones para evitar malentendidos
- Evitar Emoji ambiguos: 🔫 (arma/pistola de agua), 🍆 (verdadera/insinuación)
- Probar visualización multiplataforma: Usa la Herramienta de búsqueda de Emoji para ver la renderización en diferentes plataformas
- Usar con moderación en contextos profesionales: Evitar en correos/documentos formales
- Precaución con secuencias combinadas: Las secuencias ZWJ pueden mostrarse como múltiples Emoji independientes en sistemas antiguos
Usar Emoji en código
HTML
<!-- Uso directo -->
<p>Bienvenido 🚀</p>
<!-- Escape Unicode -->
<p>Bienvenido 🚀</p>
<!-- CSS content -->
<style>
.icon::before { content: '\1F680'; }
</style>
JavaScript
// Uso directo (recomendado)
const rocket = '🚀';
// Escape Unicode
const rocket = '\u{1F680}';
// En cadenas
const message = `Despliegue exitoso ${rocket}`;
// Como clave de objeto (no recomendado, pero posible)
const icons = { '🚀': 'rocket', '🎨': 'art' };
Python
# Uso directo
rocket = '🚀'
# Escape Unicode
rocket = '\U0001F680'
# En f-string
message = f'Despliegue exitoso {rocket}'
Almacenamiento en base de datos
-- MySQL: requiere el conjunto de caracteres utf8mb4
CREATE TABLE messages (
content VARCHAR(500) CHARACTER SET utf8mb4
);
-- ❌ El conjunto de caracteres utf8 no puede almacenar Emoji
-- ✅ El conjunto de caracteres utf8mb4 puede almacenar Emoji
Buscar Emoji con la herramienta de Tools Ku
- Abre la Herramienta de búsqueda de Emoji
- Ingresa una palabra clave (en español o inglés) como "feliz"
- Consulta la lista de Emoji coincidentes
- Haz clic para copiar al portapapeles
- Navega por categorías
Ejemplos de búsqueda
| Palabra clave | Resultado |
|---|---|
| feliz | 😄😁😆😊🥰 |
| cohete | 🚀🚁🛸 |
| gato | 🐱🐈🐈⬛ |
| comida | 🍕🍔🍜🍣🍰 |
| trabajo | 💼💻📊📋✏️ |
Expresiones regulares para Emoji
Coincidir todos los Emoji
// Regex para Emoji (versión simplificada)
const emojiRegex = /\p{Emoji_Presentation}/gu;
// Versión más completa (incluye modificadores y secuencias ZWJ)
const fullEmojiRegex = /\p{Extended_Pictographic}(\u{FE0F})?(\u{1F3FB}-\u{1F3FF})?(\u{200D}\p{Extended_Pictographic}(\u{FE0F})?(\u{1F3FB}-\u{1F3FF})?)*/gu;
// Uso
const text = 'Hello 😀 World 🚀';
const emojis = text.match(fullEmojiRegex);
// ["😀", "🚀"]
Eliminar Emoji del texto
function removeEmoji(text: string): string {
return text.replace(/\p{Emoji_Presentation}/gu, '');
}
removeEmoji('Hello 😀 World 🚀'); // "Hello World "
Contar cantidad de Emoji
function countEmoji(text: string): number {
const matches = text.match(/\p{Emoji_Presentation}/gu);
return matches ? matches.length : 0;
}
Preguntas frecuentes
¿Por qué los Emoji se muestran como cuadros □?
- Fuente no soportada: El sistema carece de fuentes Emoji
- Conjunto de caracteres incorrecto: La base de datos/archivo usa UTF-8 en lugar de UTF-8MB4
- Versión antigua: Los nuevos Emoji requieren una versión más reciente del sistema
¿Por qué .length de un Emoji no es 1?
'😀'.length // 2 (par sustituto)
'👨🏽'.length // 4 (base + modificador, cada uno ocupa 2)
'👨👩👦'.length // 8 (3 Emoji + 2 ZWJ)
[...'👨👩👦'].length // 5 (descomposición correcta)
// Longitud de cadena segura
function safeLength(str: string): number {
return [...str].length;
}
¿Cómo obtener los últimos Emoji?
Los Emoji se actualizan anualmente (con la versión Unicode), los nuevos Emoji requieren:
- Actualización del sistema operativo (iOS/Android/Windows)
- Actualización del navegador
- Actualización de fuentes (Noto Color Emoji)
Resumen
Los Emoji son parte del estándar Unicode. Comprender sus principios de codificación (puntos de código, modificadores, secuencias ZWJ) ayuda a manejar correctamente los problemas de compatibilidad multiplataforma. Puntos clave: usa utf8mb4 para almacenar en bases de datos, usa [...str] para contar caracteres y presta atención a las diferencias de visualización entre plataformas. La Herramienta de búsqueda de Emoji de Tools Ku te permite encontrar rápidamente los Emoji que necesitas.