22 puntos por GN⁺ 2023-10-03 | 3 comentarios | Compartir por WhatsApp
  • Hace 20 años, Joel enfatizó que no existe tal cosa como "texto plano" y que es indispensable entender la codificación
  • Unicode es el estándar que unifica todos los idiomas humanos para que puedan usarse en computadoras
  • Es un sistema de puntos de código que asigna un número único a cada carácter
  • El punto de código más grande es 0x10FFFF, lo que ofrece un espacio de alrededor de 1.1 millones de puntos de código
  • UTF-8 es la codificación más común y se usa con una probabilidad del 98%
  • UTF-8 es una codificación de longitud variable, por lo que un punto de código puede codificarse como una secuencia de 1 a 4 bytes
  • UTF-8 es compatible a nivel de bytes con ASCII y es eficiente en espacio para el latín básico
  • UTF-8 tiene funciones integradas de detección y recuperación de errores, por lo que puede identificar secuencias de bytes UTF-8 completas y válidas
  • Los clústeres de grafemas extendidos, o grafemas, son la unidad sobre la que se debe iterar, no los puntos de código
  • Unicode se actualiza cada año, y las reglas que definen los clústeres de grafemas cambian anualmente
  • Unicode puede renderizarse de forma distinta según la configuración regional
  • Los pares sustitutos de Unicode son dos unidades de UTF-16 usadas para codificar un solo punto de código Unicode
  • UTF-16 todavía se usa en algunos sistemas como representación en memoria
  • Las cadenas Unicode deben normalizarse antes de compararse
  • El artículo enfatiza la importancia de usar bibliotecas Unicode incluso para operaciones básicas como strlen, indexOf y substring

3 comentarios

 
kimws 2023-10-04

En el caso de "‍♂️".length, en Python 3.11 devuelve 1.

 
kimws 2023-10-04

Parece que los emojis salen rotos en los comentarios.

 
GN⁺ 2023-10-03
Opiniones de Hacker News
  • Este artículo analiza la complejidad de Unicode y cómo usarlo en el desarrollo de software.
  • Un comentarista no está de acuerdo con la afirmación del artículo de que los "clústeres de grafemas extendidos" son la mejor forma de pensar en los caracteres de Unicode, y sostiene que la definición de "carácter" puede variar según el uso previsto.
  • El comentarista propone que la iteración de cadenas debe basarse en los puntos de código, que son el nivel fundamental en el que opera Unicode.
  • Otro comentarista elogia el artículo y responde a la pregunta del autor sobre por qué la ligadura "fi" tiene su propio punto de código, explicando que esto se debe al principio de compatibilidad de ida y vuelta de Unicode.
  • Un comentarista se queja de ver varios punteros del mouse en la pantalla mientras lee la página.
  • Otro comentarista habla sobre el desafío de configurar la configuración regional de una computadora cuando el usuario puede leer y escribir en varios idiomas, y critica que Linux tenga menos opciones de personalización que Windows.
  • Un comentarista comparte que tuvo problemas al sanear la entrada de usuarios para sistemas de terceros debido a la forma en que se manejan los caracteres acentuados.
  • Otro comentarista rebate la afirmación del artículo de que los puntos de código no son la mejor unidad para trabajar, y sostiene que hay muchas situaciones en las que sí se trabaja a nivel de punto de código.
  • Un comentarista critica el ejemplo del artículo sobre cómo se codifica "é" en Unicode, diciendo que resulta engañoso y que no representa la forma en que normalmente se codifican los caracteres.
  • Otro comentarista analiza el problema de que los logogramas chino, japonés y coreano compartan el mismo punto de código, lo que provoca una mala representación de nombres de archivos en chino en Windows cuando la configuración regional del sistema no es chino.
  • Un comentarista está confundido y molesto por el efecto de cursor del mouse en la página.