Saltar al contenido

Bloques Unicode

Unicode divide su espacio de código en bloques nombrados, cada uno un rango contiguo reservado para un script o una familia de símbolos. Saber en qué bloque vive un carácter es lo que convierte un misterio—¿por qué este pegado se rompió, por qué esta expresión regular lo pierde—en una pregunta que se puede responder.

Los nombres de los bloques son identificadores, no descripciones: se usan literalmente en una expresión regular como \p{Block=Cyrillic} e en cada archivo de datos Unicode, así que permanecen en inglés en cada idioma. Lo que se traduce es la oración junto a ellos.

Esta es una selección curada en lugar de todos los aproximadamente 340 bloques—los que aparecen al trabajar con texto. La tabla ASCII cubre el primer bloque en detalle completo; esta página comienza donde esa se detiene.

Latín

5

El latín se distribuye sobre varios bloques, por eso hacer coincidir por bloque nunca funciona exactamente.

RangoBloqueQué contieneMuestra
U+0000–U+007FBasic LatinASCII, sin cambios: letras latinas, dígitos, puntuación, códigos de controlA z 0 ?
U+0080–U+00FFLatin-1 SupplementAcentos de Europa occidental, más £ § × ÷ e el espacio sin rupturaé ñ ü ×
U+0100–U+017FLatin Extended-AAcentos de Europa central e oriental—č, ł, ő, șč ł ő š
U+0180–U+024FLatin Extended-BLetras adicionales para ortografías africanas e fonéticasƒ ǎ ȳ
U+1E00–U+1EFFLatin Extended AdditionalVietnamita e otras letras latinas con múltiples acentosạ ế ṛ

Marcas combinables e modificadores

4

Estos se adjuntan al carácter anterior e no tienen ancho propio.

RangoBloqueQué contieneMuestra
U+0300–U+036FCombining Diacritical MarksAcentos aplicados al carácter anteriorLa segunda forma descompuesta para escribir é. Normaliza a NFC para colapsarlo.◌́ ◌̈ ◌̌
U+02B0–U+02FFSpacing Modifier LettersLetras superíndice e marcas de énfasis e tono IPAʰ ˈ ˚
U+FE00–U+FE0FVariation SelectorsSelectores invisibles eligiendo presentación de texto o emojiVS16 es lo que convierte ✔ en un emoji. Invisible, pero cuenta.
U+FE20–U+FE2FCombining Half MarksMitades de marcas que abarcan dos caracteres

Otros scripts

8
RangoBloqueQué contieneMuestra
U+0370–U+03FFGreek and CopticGriego, e las letras coptas que comparten su bloqueα Ω π
U+0400–U+04FFCyrillicRuso, ucraniano, serbio, búlgaro e alfabetos relacionadosд Я ж
U+0590–U+05FFHebrewLetras hebreas, puntos vocálicos e marcas de cantilaciónא ש
U+0600–U+06FFArabicLetras árabes, en sus formas aisladasا ب ي
U+0900–U+097FDevanagariHindi, sánscrito, marathi e idiomas relacionadosक ह
U+0E00–U+0E7FThaiConsonantes tailandesas, vocales e marcas de tonoก ท
U+10A0–U+10FFGeorgianMkhedruli georgianoა ბ
U+1F00–U+1FFFGreek ExtendedGriego politónico—los acentos de textos clásicosᾰ ῶ

Puntuación e números

5

La fuente de la mayoría de caracteres invisibles que sobreviven a una copia-pega.

RangoBloqueQué contieneMuestra
U+2000–U+206FGeneral PunctuationGuiones, comillas rizadas, puntos suspensivos—e la mayoría de espacios invisiblesU+200B espacio de ancho cero e U+2060 unidor de palabras viven aquí.– — “ ” …
U+2070–U+209FSuperscripts and SubscriptsDígitos e letras superíndice e subíndice⁰ ⁴ ₂
U+20A0–U+20CFCurrency SymbolsSignos de moneda Latino-1 sin espacio para—€, ₴, ₹, ₺€ ₴ ₺
U+2100–U+214FLetterlike SymbolsSímbolos construidos de letras—™, №, ℃, ℓ™ ℃ №
U+2150–U+218FNumber FormsFracciones vulgares e numerales romanos como caracteres únicos⅓ ⅕ Ⅷ

Símbolos e dibujos

9
RangoBloqueQué contieneMuestra
U+2190–U+21FFArrowsFlechas en cada dirección, sencillas e dobles← ↔ ⇒
U+2200–U+22FFMathematical OperatorsOperadores matemáticos—∀, ∑, ≠, ∞∀ ∑ ≠
U+2300–U+23FFMiscellaneous TechnicalSímbolos técnicos e de teclado—⌘, ⌥, ⌫, ⏎⌘ ⌥ ⏎
U+2500–U+257FBox DrawingLíneas e esquinas para cajas de terminal e tablas─ ┌ ╬
U+2580–U+259FBlock ElementsBloques sólidos e sombreados, usados para gráficos de barras de terminal█ ▓ ░
U+25A0–U+25FFGeometric ShapesCuadrados, círculos, triángulos e diamantes■ ● ▲
U+2600–U+26FFMiscellaneous SymbolsClima, astrología, ajedrez, naipes e los palos de los naipes☀ ★ ♥
U+2700–U+27BFDingbatsAdornos de imprenta—marcas de verificación, tijeras, estrellas✂ ✓ ➜
U+2800–U+28FFBraille PatternsTodos los 256 patrones de puntos de Braille, usados para gráficos de terminal también⠁ ⣿

CJK e ancho completo

6

Los formularios de ancho completo son caracteres separados de sus gemelos ASCII, no una fuente.

RangoBloqueQué contieneMuestra
U+3000–U+303FCJK Symbols and PunctuationEspacio ideográfico e puntuación CJKU+3000 es un espacio de ancho completo e no se recorta por la mayoría de reglas de espacios en blanco.  、 。
U+3040–U+309FHiraganaLa sílaba japonesa para palabras nativas e gramáticaあ ん
U+30A0–U+30FFKatakanaLa sílaba japonesa para préstamos e énfasisア ン
U+4E00–U+9FFFCJK Unified IdeographsEl bloque Han principal—casi 21,000 caracteres compartidos por chino, japonés e coreano日 本 語
U+AC00–U+D7AFHangul SyllablesLas 11,172 sílabas coreanas precompuestasCada una también puede escribirse como Jamo separado, que la normalización reconcilia.한 글
U+FF00–U+FFEFHalfwidth and Fullwidth FormsCopias de ancho completo de ASCII, e Katakana de ancho medioA no es A. El texto pegado de formularios CJK frecuentemente necesita ser plegado a ASCII.A ! ア

Arriba de U+FFFF, e los casos especiales

10

Cualquier cosa aquí toma dos unidades UTF-16, que es de donde surgen los errores de longitud de cadena.

RangoBloqueQué contieneMuestra
U+D800–U+DB7FHigh SurrogatesPrimera mitad de un par UTF-16—nunca válido por sí soloUn sustituto solitario es lo que una cadena cortada a través de un emoji deja atrás.
U+DC00–U+DFFFLow SurrogatesSegunda mitad de un par UTF-16—nunca válido por sí solo
U+E000–U+F8FFPrivate Use AreaSin asignar por diseño, para acuerdos privadosDonde los iconos fuentes ponen sus glifos. Sin sentido sin la fuente coincidente.
U+FFF0–U+FFFFSpecialsEl carácter de reemplazo e los parientes de la marca de orden de byteU+FFFD es lo que ves cuando un decodificador se rindió en un byte.
U+1D400–U+1D7FFMathematical Alphanumeric SymbolsAlfabetos negrita, cursiva, script e doble ataque como caracteresLa fuente de 𝐟𝐚𝐤𝐞 𝐛𝐨𝐥𝐝 en nombres de redes sociales. Insearchable.𝐀 𝓪 𝟙
U+1F300–U+1F5FFMiscellaneous Symbols and PictographsEmoji que no son caras—clima, objetos, lugares, símbolos🌍 🔥 📄
U+1F600–U+1F64FEmoticonsEl emoji de cara😀 🙂
U+1F680–U+1F6FFTransport and Map SymbolsVehículos, símbolos de tráfico e mapa🚀 🛑
U+1F900–U+1F9FFSupplemental Symbols and PictographsAdiciones posteriores de emoji—caras posteriores, gestos, objetos🤖 🧠
U+E0000–U+E007FTagsCaracteres de etiqueta invisibles, usados en secuencias de banderaTambién el vector para texto invisible contrabandado dentro de una cadena que se ve normal.

Preguntas frecuentes

¿Cuál es la diferencia entre un bloque e un script?
Un bloque es un rango contiguo de puntos de código; un script es el sistema de escritura al que pertenece un carácter. No son lo mismo e frecuentemente discrepan—los caracteres latinos se distribuyen en al menos siete bloques, e el bloque de Combining Diacritical Marks es usado por varios scripts a la vez. En expresiones regulares, \p{Script=Latin} es casi siempre lo que deseas, no \p{Block=…}.
¿Por qué las filas sustituta no tienen caracteres de muestra?
Porque un sustituto no es un carácter. U+D800–U+DFFF están reservados como mecanismo de pareja para UTF-16: dos de ellos juntos codifican un punto de código arriba de U+FFFF. Por sí solos son texto inválido, que es exactamente por qué una cadena cortada en la mitad de un emoji produce el carácter de reemplazo—guardaste la mitad de una pareja.
¿Por qué mi carácter acentuado a veces cuenta como dos?
Porque hay dos formas de escribirlo. é puede ser un punto de código de Latin-1 Supplement, o e seguido de una marca de acento agudo combinable de el bloque Combining Diacritical Marks. Se ven idénticos e comparan como desiguales. Normalizar a NFC colapsa la segunda forma en la primera, e eso es para qué sirve una herramienta de normalización.
¿Es un emoji un carácter?
Raramente. Un único emoji mostrado es frecuentemente varios puntos de código—un símbolo base, modificadores de tono de piel, selectores de variación, e unidores de ancho cero vinculando una familia juntos. Una longitud de 1 es la excepción, no la regla, e cualquier código que divida cadenas por índice eventualmente dividirá una.