Codificación de emojis, Unicode e internacionalización

Rate this content
Bookmark

¿Por qué '👩🏿‍🎤'.length = 7? ¿Es JavaScript UTF-8 o UTF-16? ¿Qué sucede bajo el capó cuando estableces ? ¿Alguna vez te has preguntado cómo se codifican los emojis y los lenguajes de escritura complejos para funcionar correctamente en navegadores y dispositivos, para miles de millones de personas en todo el mundo? ¿O cómo se introducen y aprueban nuevos emojis? ¿Alguna vez has visto uno de estos: □ � caracteres de glifo 'especiales' antes y quieres más información sobre por qué podrían aparecer y cómo evitarlos en el futuro? ¡Hablemos sobre la codificación Unicode en JavaScript y en la World Wide Web! Repasaremos las mejores prácticas, los problemas comunes y proporcionaremos recursos para aprender más, ¡incluso dónde ir si quieres enviar una nueva propuesta de emoji! :)

FAQ

UTF-8 es un formato de codificación de caracteres popular que permite una conversión sin pérdidas y es compatible con una gran variedad de caracteres y símbolos de diferentes idiomas. Es el más común en la web, asegurando que los datos se representen correctamente en diferentes dispositivos y plataformas.

Unicode asigna a cada emoji un punto de código único que permite representarlos consistentemente en diferentes plataformas. Los emojis pueden tener longitudes variables debido a modificadores como el tono de piel o género, lo que impacta en cómo se cuentan y muestran en los sistemas que utilizan Unicode.

Una marca de combinación en Unicode es un carácter que modifica el precedente, como acentos o diacríticos. En JavaScript, esto puede llevar a que la longitud de la cadena no refleje el número de símbolos visibles, ya que cada marca de combinación cuenta como un carácter adicional.

Utilizando el método string.prototype.normalize, que normaliza la forma de la cadena según Unicode, se pueden unificar las marcas de combinación con sus caracteres base, reduciendo la longitud y evitando errores comunes en la manipulación de cadenas.

El Consorcio Unicode es una organización sin fines de lucro que desarrolla el estándar Unicode, diseñado para ser un sistema de codificación universal que permite el uso de cualquier idioma en dispositivos y plataformas a nivel mundial. Su misión es asegurar que todos puedan utilizar su propio idioma en la tecnología moderna.

Cualquier persona puede proponer un nuevo emoji al Consorcio Unicode mediante un proceso establecido que incluye presentar un caso de uso y la relevancia cultural del emoji. Este proceso busca incorporar representaciones inclusivas y diversas en el estándar Unicode.

Es importante porque algunos emojis pueden contar como múltiples caracteres debido a sus modificadores o composición, lo que afecta el límite de caracteres en plataformas como Twitter, que cuenta cada emoji como dos caracteres, independientemente de su longitud visual.

Naomi Meyer
Naomi Meyer
34 min
18 Jun, 2021

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta charla explora la codificación UTF-8 y su relación con los emojis. Se discute la historia de la codificación, el nacimiento de Unicode y la importancia de considerar el uso global al construir productos de software. La charla también aborda los problemas de codificación de JavaScript con Unicode y el uso del método string.prototype.normalize. Se destaca la adición de soporte para emojis en Unicode, el proceso de variación y propuesta para emojis, y la importancia de la transparencia en la codificación de emojis. La charla concluye con la importancia de los emojis diversos, la recomendación de UTF-8 para el desarrollo web y la necesidad de comprender la codificación y decodificación en la arquitectura de aplicaciones.

1. Introducción a la codificación UTF-8 y los emojis

Short description:

Soy Naomi Meyer, una ingeniera de desarrollo de software en Adobe, y hoy hablaré sobre la codificación UTF-8 y cómo se relaciona con los emojis. También abordaremos el Consorcio Unicode, la historia de la codificación y la importancia de considerar el uso global al construir productos de software. Comencemos por comprender cómo las computadoras interpretan los caracteres y luego adentrémonos en las primeras codificaciones, específicamente ASCII.

Hola, gracias por esa gran introducción. Soy Naomi Meyer, y trabajo como ingeniera de desarrollo de software en Adobe, donde me dedico a la localización y la ingeniería de internacionalización para productos creativos como Adobe Fonts y Adobe Portfolio. Aquí es donde puedes encontrarme en línea, y si hay algo que te apasione o tengas opiniones fuertes al respecto, por favor házmelo saber. Me encantaría continuar esta conversación en línea.

Estoy segura de que la mayoría de nosotros hemos visto esto muchas veces en la etiqueta head de nuestro marcado HTML, y todos sabemos agregar esta línea meta charset UTF-8. Pero últimamente me ha fascinado conocer los detalles subyacentes de lo que realmente significa y hace este UTF-8. Así que estoy emocionada de compartir más detalles sobre qué es y por qué creo que es tan genial. Además, esto se conecta con esta peculiaridad de JavaScript que podemos ver aquí con estos emojis aparentemente de caracteres, cuando como cadenas en JavaScript tienen una longitud mucho mayor de lo esperado. Siéntete libre de probar esto tú mismo en tus herramientas de desarrollo. Sé que yo quería probarlo primero cuando vi algo así. Y parte de mi objetivo hoy es hablar sobre por qué esto es así, por qué la longitud de familyEmoji es igual a 11, por qué eso es cierto. Y proporcionar más detalles sobre la codificación subyacente que ocurre aquí y qué podemos hacer para manejarlo correctamente.

Hablando de emojis, personalmente los encuentro tanto encantadores como intrigantes desde una perspectiva de ingeniería, una perspectiva lingüística, una perspectiva de diseño creativo, una perspectiva sociológica cultural internacional y mucho más. Nuestra agenda para hoy es comenzar con un poco de historia de la codificación para comprender más de dónde venimos. Luego entraremos en el Consorcio Unicode y el algoritmo UTF-8. Luego hablaremos sobre cómo esto nos permite codificar emojis y diferentes idiomas en plataformas, dispositivos y sistemas operativos. En general, creo que es muy importante tener en cuenta estas grandes ideas al construir productos de software que se utilizan a nivel mundial. Esta es una especie de línea de tiempo, una línea de tiempo amplia, de lo que tocaremos hoy. Tenemos mucho que cubrir en estos 20 minutos. Comencemos de inmediato con la codificación.

Por supuesto, cuando estamos en nuestras computadoras y escribimos un emoji, una letra, un carácter en cualquier idioma, estos son interpretados por la máquina como ceros y unos. Veamos un poco cómo funciona eso. Para entender cómo funciona hoy, retrocedamos en el pasado a la década de 1960 de las primeras codificaciones. En los años 60, había estas grandes computadoras que llenaban toda una habitación. Esta es una imagen de una de la NASA. Los ingenieros de entonces idearon un sistema. Ese sistema se llama ASCII, el Código Estándar Americano para el Intercambio de Información. Esta imagen es de la primera versión que se publicó en 1963. ASCII se desarrolló a partir del código telegráfico. Originalmente se construyó para una clasificación más conveniente de listas, alfabéticamente por caracteres ascendentes, descendentes.

2. ASCII y el nacimiento de Unicode

Short description:

En 1963, ASCII se codificó en 128 caracteres exclusivamente en inglés en enteros de 7 bits. Con el tiempo, surgieron errores debido a la inclusión de caracteres no ingleses con diacríticos y acentos. Internet exacerbó el problema de las codificaciones conflictivas, lo que llevó a errores y signos de interrogación. En 1991, se introdujo Unicode versión 1 como un estándar de codificación universal para abordar este problema. La misión actual de Unicode es permitir que todos usen su propio idioma en dispositivos. Unicode versión 1.0, publicada en octubre de 1991, tenía 7,161 caracteres. Comprender Unicode requiere un cambio en la forma de pensar acerca de los caracteres abstractos y los puntos de código.

En 1963, ASCII se codificó en 128 caracteres exclusivamente en inglés en enteros de 7 bits. Así que creo que ASCII es bastante genial porque tiene sentido cómo se construyó.

Primero, tomamos un carácter, como la letra A, y le asignamos un número decimal ASCII, 65, que en binario es igual a 1, cinco ceros, uno, en el sistema original de 7 bits. Luego, después de 65 viene 66, que es B, y continuamos en orden alfabético hasta llegar a Z, que es el decimal ASCII 90. Luego, para pasar de caracteres en mayúscula a minúscula, solo cambiamos un bit, 32 letras, 32 más tarde, que es el número decimal ASCII 97. Y eso continúa en orden alfabético. Así que creo que es un sistema genial. Y un saludo a Tom Scott en este video en el que lo explica de manera muy clara.

ASCII tiene sentido, pero con el tiempo, hubo muchos errores. Estos errores surgieron porque los caracteres no ingleses, como los que se muestran aquí, incluyen diacríticos y acentos adicionales que se agregaron. ASCII originalmente funcionaba con siete bits. Pero luego las computadoras pasaron a ocho bits, y pasamos de 128 caracteres a 256 caracteres. Y diferentes países y sistemas de idiomas agregaron más caracteres con esos 128 adicionales. Y diferentes idiomas como el japonés, por ejemplo, hicieron su propio sistema completo. Tenían un sistema de codificación multibyte separado, ya sabes, y el japonés, el ruso, todos estos idiomas tenían un sistema de codificación diferente. Y eso estaba bien cuando funcionaban de forma independiente. Pero luego llegó Internet. Y con la World Wide Web, Internet rompió un poco las computadoras porque no había un sistema de codificación universal. Cuando dos sistemas de codificación no compatibles se encontraban, obteníamos este tipo de errores como los que vemos aquí con muchos signos de interrogación y muchos errores.

Así que, en 1991, con la World Wide Web, obtuvimos Unicode versión 1. Y Unicode fue diseñado para ser un estándar de codificación universal para resolver este problema de codificaciones de caracteres conflictivas. Unicode Today es una organización sin fines de lucro cuya misión es que todos en el mundo puedan usar su propio idioma en teléfonos y computadoras. La versión 1.0 de Unicode se publicó en octubre de 1991 y tenía 7,161 caracteres. Para comprender y pensar en Unicode, debes hacer un cambio mental en tus suposiciones sobre el lenguaje y los caracteres. Hay tres ideas importantes para tener en cuenta. Un reconocimiento a Dimitri Pavloutin, quien tiene un excelente artículo que recomiendo llamado `Lo que todo desarrollador de JavaScript debe saber sobre Unicode`. La primera idea a tener en cuenta son los caracteres abstractos. En lugar de pensar en letras de un alfabeto, es bueno pensar en caracteres abstractos y Unicode trata los caracteres en estos términos abstractos. En segundo lugar, tenemos los puntos de código.

QnA

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Cómo localizar y personalizar contenido con Sanity.io y Next.js
React Advanced Conference 2021React Advanced Conference 2021
8 min
Cómo localizar y personalizar contenido con Sanity.io y Next.js
Estructurar tu contenido con Sanity.io significa que puedes consultar el contenido basado en señales de tus visitantes, como su ubicación. La personalización es un problema complicado con sitios estáticos y el jamstack, esta demostración te mostrará cómo se puede hacer con Sanity.io, Next.js y Vercel.
End-to-end i18n
React Advanced Conference 2021React Advanced Conference 2021
26 min
End-to-end i18n
Existen algunas bibliotecas excelentes que ayudan con la internacionalización en React, pero sorprendentemente hay poca orientación sobre cómo manejar la internacionalización de principio a fin. En esta masterclass discutiremos las mejores prácticas y consejos prácticos para manejar las traducciones en React. Hablaremos sobre cómo extraer cadenas de texto de su código, cómo gestionar archivos de traducción, cómo pensar en el mantenimiento a largo plazo de sus traducciones e incluso cómo evitar errores comunes en los que suelen caer los desarrolladores que solo hablan un idioma.
Construyendo aplicaciones JS con internacionalización (i18n) en mente
JSNation 2022JSNation 2022
21 min
Construyendo aplicaciones JS con internacionalización (i18n) en mente
En Adobe construimos productos para el mundo, esta masterclass proporcionará una visión general de las mejores prácticas de internacionalización (i18n), globalización (g11n) y localización (l10n). Por qué son importantes y cómo implementarlas en el diseño, la experiencia de usuario y en cualquier código JS, utilizando ejemplos de JS puro y recomendaciones de las mejores bibliotecas de código abierto.
Internacionalizando React
React Summit Remote Edition 2021React Summit Remote Edition 2021
29 min
Internacionalizando React
Aprender 100 idiomas diferentes es un desafío, pero diseñar tu aplicación de React para admitir 100 idiomas no tiene por qué serlo. A medida que tu aplicación web crece y alcanza una audiencia global, la funcionalidad multilingüe se vuelve cada vez más esencial. Entonces, ¿cómo diseñas tu código de manera que sea lo suficientemente flexible como para incluir a todos tus usuarios internacionales? En esta charla, exploraremos qué significa y cómo se ve construir una aplicación de React que admita internacionalización (i18n). Aprenderás varias estrategias diferentes para hacer que tu aplicación sea a prueba de locales con contextos de React y hooks personalizados.
Localización para casos de uso del mundo real: Aprendizajes clave de la incorporación de marcas globales
React Summit 2022React Summit 2022
8 min
Localización para casos de uso del mundo real: Aprendizajes clave de la incorporación de marcas globales
i18n no es fácil, pero con una planificación cuidadosa de tu modelo de contenido te mostraré cómo estructurar la configuración, la autoría y la consulta de contenido localizado. Cubriremos documentos traducidos completos o parciales, la diferencia entre contenido específico del mercado y del idioma, formas de autoría en un CMS como Sanity y formas de consultarlo en frontends como Next.js y Remix.
I18n fue la Pieza que Faltaba: Permite que más del 70% de los Usuarios en el Mundo Accedan a tus Aplicaciones
JSNation 2023JSNation 2023
13 min
I18n fue la Pieza que Faltaba: Permite que más del 70% de los Usuarios en el Mundo Accedan a tus Aplicaciones
La accesibilidad, una mejor DX y el rendimiento reciben mucha atención ya que mejoran significativamente la UX. Además, brinda satisfacción a los desarrolladores al ver las mejoras significativas. Pero, ¿qué hay de la internacionalización? Un dato curioso: más del 70% de los usuarios en el mundo acceden a contenido no inglés. En esta charla, te mostraré más datos sorprendentes sobre la internacionalización y cuáles son los enfoques escalables. Verás ejemplos con bibliotecas para frameworks con diferentes lógicas para implementar diferentes diseños de internacionalización.

Workshops on related topic

Localizando tu sitio web de Remix
React Summit 2023React Summit 2023
154 min
Localizando tu sitio web de Remix
WorkshopFree
Harshil Agrawal
Harshil Agrawal
El contenido localizado te ayuda a conectarte con tu audiencia en su idioma preferido. No solo te ayuda a hacer crecer tu negocio, sino que también ayuda a tu audiencia a comprender mejor tus ofertas. En este masterclass, obtendrás una introducción a la localización y aprenderás cómo implementar la localización en tu sitio web de Remix alimentado por Contentful.
Tabla de contenidos:- Introducción a la localización- Introducción a Contentful- Localización en Contentful- Introducción a Remix- Configuración de un nuevo proyecto de Remix- Renderización de contenido en el sitio web- Implementación de la localización en el sitio web de Remix- Recapitulación- Próximos pasos