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! :)

This talk has been presented at JSNation Live 2020, check out the latest edition of this JavaScript Conference.

FAQ

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.

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.

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.

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.

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 2021React Advanced 2021
8 min
Cómo localizar y personalizar contenido con Sanity.io y Next.js
Sanity.io provides a content platform for structured content that replaces traditional CMS. Their solution allows businesses to structure and query content anywhere using the Sanity studio and open source React application. The talk focuses on solving the challenge of sending personalized data to users in a static website environment using Next.js Vercel for hosting and Sanity for content querying and delivery. The Sanity studio allows for modeling pages, articles, and banners, with banners being shown to visitors based on their country. The solution involves using Grok queries to fetch the right banner based on country information, demonstrating personalization based on localization and dynamic content querying.
End-to-end i18n
React Advanced 2021React Advanced 2021
26 min
End-to-end i18n
Thanks for joining my talk on end-to-end internationalization. I'll walk you through internationalizing a React app, covering translated strings, currency and date formatting, translator management, and injecting translated strings back into the app. The constants used throughout the app define localization settings and translations. The React Intel library is used for managing translations, and custom functions are created for consistent date and number formatting. The translation process involves extracting strings, using tools like PO Edit, and compiling the translated strings into JSON files for the React app.
Construyendo aplicaciones JS con internacionalización (i18n) en mente
JSNation 2022JSNation 2022
21 min
Construyendo aplicaciones JS con internacionalización (i18n) en mente
This Talk discusses building JavaScript apps with internationalization in mind, addressing issues such as handling different name formats, using Unicode for compatibility, character encoding bugs, localization and translation solutions, testing in different languages, accommodating translated text in layouts, cultural considerations, and the importance of enabling different languages for users. The speaker also mentions various open source tools for internationalization. The Talk concludes with a reminder to avoid assumptions and embrace diversity in the World Wide Web.
Internacionalizando React
React Summit Remote Edition 2021React Summit Remote Edition 2021
29 min
Internacionalizando React
The Talk discusses the challenges of adding and maintaining new languages in a React application and suggests ways to make the process easier. It defines internationalization as the process of architecting an application for localization and explains that localization involves adapting the content and experience for a specific locale. The speaker recommends using libraries for internationalization and provides resources for learning more about the topic. The Talk also addresses edge cases and difficulties with multiple dialects or languages, translation processes, and right-to-left CSS libraries.
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
I'm going to talk about localisation in the real world and how Sanity, a platform for structured content, focuses on content as data and flexible internationalization. Sanity allows for multiple languages in different markets, providing customization options for content visibility based on location. The platform offers a flexible approach to content creation and customization, allowing organizations to internationalize their content based on their specific needs. With Sanity's query language and the brand new version of Sanity Studio, developers have more flexibility than ever before.
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
Today's Talk explores the impact of I18n and DEX for developers, the challenges of I18n, and the importance of understanding different approaches. It discusses determining languages and regions using IP address, browser settings, and URL patterns. The Talk also covers translation loading, using the i18xProvider, and addressing issues such as URL parameters and maintaining translation files. Additionally, it explores connecting with a Content Management System, implementing folder level translation, and utilizing code splats for dynamic routes.

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