Què és el codi Unicode: guia completa, usos i codificacions

Darrera actualització: 20 d'agost de 2025
  • Unicode assigna un punt de codi únic a cada caràcter i sincronitza el repertori amb ISO/IEC 10646.
  • Les formes UTF-8, UTF-16 i UTF-32 codifiquen els mateixos caràcters i permeten conversió sense pèrdua.
  • Normalització, Bidi i propietats de la UCD garanteixen comparació, ordenació i renderització coherents.
  • Adoptar Unicode (preferiblement UTF-8 a la web) evita corrupció i facilita la internacionalització.

Il·lustració genèrica sobre Unicode

Unicode és l'idioma comú que parlen els ordinadors quan manegen text : assigna un número únic a cada caràcter i símbol, de gairebé qualsevol sistema d'escriptura, perquè es pugui emmagatzemar, processar i compartir sense embolics entre plataformes i països.

Aquest estàndard va sorgir per superar les limitacions dels vells jocs de caràcters ( el set ASCII , pàgines de codis, EBCDIC, etc.), que es quedaven curts o eren incompatibles entre si, i avui està sincronitzat amb ISO/IEC 10646, manté algoritmes (com el bidireccional) i defineix propietats i regles de normal.

Què és Unicode i per què és tan important?

Unicode és un estàndard de codificació de caràcters universal i en constant evolució que descriu cada caràcter amb un nom, un punt de codi (code point) i un conjunt de propietats (script, categoria, direccionalitat, majúscules/minúscules, etc.). L'Unicode Technical Committee (UTC), dins de l'Unicode Consortium, el manté en sincronia amb l'estàndard ISO/IEC 10646.

El seu objectiu és la universalitat, la uniformitat i la unicitat : un repertori ampli que permeti intercanviar text multilingüe sense ambigüitats, amb regles clares i reproduïbles. Gràcies a això, tecnologies modernes (sistemes operatius, navegadors, XML, Java, bases de dades) poden barrejar scripts llatins, àrabs, ideogrames CJK, emojis, símbols tècnics o musicals al mateix document.

Caràcters, glifs i punts de codi

A Unicode, un caràcter és una unitat d'informació abstracta i un punt de codi n'és el identificador numèric . Un glif és la forma visual (el que veus a la pantalla), que depèn de la font . Un mateix caràcter pot tenir diversos glifs i, de vegades, un glif representa més dun caràcter.

La notació habitual d'un punt de codi és U+XXXX en hexadecimal . Exemples il·lustratius del material analitzat: la 'l' minúscula és U+006C, la 'ü' minúscula precomposta és U+00FC, la 'é' és U+00E9 i la beta grega: la majúscula és U+0392 i la minúscula U+03B2 (en alguns textos se cita 'β' 'Β').

L'espai de codis d'Unicode té 1.114.112 posicions possibles (fins a U+10FFFF) , organitzades per cobrir i classificar tots els sistemes d'escriptura i símbols, amb desenes de milers d'assignacions efectives i en creixement a cada versió.

Plànols (plans), àrees i blocs

Unicode divideix el seu espai en 17 plànols de fins a 65.536 punts de codi cadascun . Aquesta organització facilita agrupar scripts i símbols relacionats i trobar ràpidament allò que busques.

Plànols més rellevants : el Pla Multilingüe Bàsic (BMP, pla 0) reuneix la pràctica totalitat d'alfabets moderns i molts símbols; el Suplementari Multilingüe (SMP, plànol 1) guarda scripts històrics i símbols tècnics (p. ex., musicals i matemàtics); el Suplementari Ideogràfic (SIP, plànol 2) amplia els ideogrames CJK; el plànol 14 (SSP) inclou etiquetes especials; i els plànols 15 i 16 són dús privat.

Blocs i àrees : els plànols se subdivideixen informalment en àrees i formalment en blocs contigus. Els blocs es fan servir per tabular i documentar caràcters, encara que no sempre corresponen a agrupacions lingüístiques amb significat.

  Què és ITIL i per a què serveix?

Ideogrames CJK i el projecte Unihan

Els ideogrames de l'Àsia oriental (han) s'unifiquen a Unicode amb variacions estilístiques per regió , però referint-se al mateix caràcter abstracte. Per a la seva gestió hi ha l'Ideographic Rapporteur Group (IRG), un grup d'ISO/IEC JTC1/SC2/WG2 amb representació de la Xina, el Japó, Corea, el Vietnam, Hong Kong, Macau, Singapur, EUA, entre d'altres.

La base de dades Unihan reuneix informació auxiliar (lectures, significats, equivalències) imprescindible per manejar aquests ideogrames en diferents idiomes i estàndards històrics o corporatius.

Principals blocs CJK i extensions :

  • Ideogrames unificats CJK (BMP, U+4E00–U+9FFF): 20.992 caràcters dús comú.
  • Extensió A (BMP, U+3400–U+4DBF): 6.592 ideogrames menys freqüents.
  • Extensions B–H: en SMP/SIP/TIP, sumen desenes de milers més (B: U+20000–U+2A6DF, 42.720; C: U+2A700–U+2B73F, 4.154; D: U+2B740–U+2B81F, 222; E: 2; F: U+820CEB2–U+5.762EBEF, 2; G: U+0–U+2F;
  • Altres blocs CJK relacionats: Radicals Kangxi (U+2F00-U+2FDF), Símbols i puntuació CJK (U+3000-U+303F), Compatibilitat i formats de compatibilitat, Suplement d'ideogrames de compatibilitat, etc.

Unicode preveu que la incorporació d'ideogrames no tindrà un final absolut i contempla mecanismes com les seqüències de descripció ideogràfica per representar símbols no codificats descomponent-los en components existents (amb cauteles: sense descomposició canònica ni garanties en operacions com cerca o ordenació).

Formes de codificació: UTF-8, UTF-16 i UTF-32

Unicode defineix formes de transformació (UTF) que converteixen punts de codi en unitats d'emmagatzematge perquè el programari pugui tractar el text de manera eficient segons el context.

UTF-8 és de longitud variable, orientat a bytes, compatible amb ASCII al rang U+0000–U+007F en un sol byte. L'estàndard actual utilitza de 1 a 4 bytes per caràcter; alguns textos antics esmenten 1–6, però a Unicode modern és 1–4. És el format dominant a la web.

UTF-16 fa servir unitats de 16 bits

(un o dos code units per caràcter) : la majoria de caràcters del BMP caben en una unitat; els suplementaris usen parells suplents (surrogate pairs) al rang U+D800–U+DFFF.

UTF-32 és de longitud fixa: 4 bytes per caràcter, senzill però costós en espai; útil quan importa la indexació directa per caràcter i la memòria no és cap problema.

Com es reparteixen els bits a UTF-8

El format UTF-8 distribueix els bits del punt de codi en seqüències d'1 a 4 bytes amb capçaleres reconeixibles, cosa que evita ambigüitats i facilita la detecció de límits de caràcter.

Rang Unicode Patró de bits Bytes
U+0000..U+007F 0xxxxxxx 1
U+0080..U+07FF 110yyyyy 10xxxxxx 2
U+0800..U+FFFF 1110zzzz 10yyyyyy 10xxxxxx 3
U+010000..U+10FFFF 11110uuu 10uuzzzz 10yyyyyy 10xxxxxx 4

Un avantatge clau UTF-8 és que evita problemes d'ordre de bytes (endianness) i permet processar fluxos de text amb gran eficiència, a més de ser retrocompatible amb ASCII.

Esquemes de codificació, endianness i BOM

A més de les formes UTF, Unicode descriu esquemes de serialització que resolen com es transmeten bytes entre sistemes amb diferent endiannes i com s'assenyalen aspectes com l'ordre de bytes.

  • UTF-8: no aplica endianness. Pot portar Byte Order Mark (BOM) com a pista, encara que no és requerit ni recomanat per defecte.
  • UTF-16: variants BE/LI (big/little-endian) i BOM opcional (si falta i no ho defineix el protocol, s'assumeix big-endian).
  • UTF-32: variants BE/LE amb regles anàlogues; BOM permès com a marca dordre.
  Per què serveix JavaScript?

També hi ha variants específiques com UTF-16BE/UTF-16LE i UTF-32BE/UTF-32LE (sense BOM per convenció), i altres codificacions de compatibilitat històrica com UTF-7 o UTF‑EBCDIC, a més de GB18030 (equivalent xinès a UTF‑8 amb suport per a xinès simplificat).

Normalització, composició i equivalències

Molts caràcters poden representar-se com a precompostos o com a seqüències de base+marques combinants . Exemples clàssics del material revisat: 'Ä' precompost és U+00C4, mentre que la forma descomposta és 'A' (U+0041) + dièresi (U+0308). El vietnamita 'ỗ' es pot representar com a 'o' (U+006F) + circumflex (U+0302) + titlla (U+0303).

Unicode defineix formes normalitzades i dos tipus d'equivalència : canònica (mateix contingut essencial) i de compatibilitat (formes que es poden veure iguals però amb diferències semàntiques). La normalització assegura comparar cadenes de manera fiable i reduir duplicitats.

Algorisme bidireccional i caràcters especials

Per a escriptures de dreta a esquerra, com ara àrab o hebreu, Unicode incorpora un algorisme bidireccional (Bidi) estandarditzat i en evolució (p. ex., revisions a 6.3), de manera que textos mixts amb llatí i àrab es representin en l'ordre visual correcte.

Classes de punts de codi que convé conèixer segons el material rebut: caràcters gràfics (lletres, signes, símbols), de format (invisibles que afecten el processament: U+2028 salt de línia, U+2029 salt de paràgraf, U+00A0 espai dur), codis de control heretats per compatibilitat (rangs U+0 U+0080–U+009F), ús privat, posicions reservades, suplents (U+D800–U+DFFF per a UTF-16) i no caràcters (U+FFFE, U+FFFF a cada pla).

Unicode, ISO/IEC 10646 i altres estàndards (ASCII, ANSI, pàgines de codis)

Unicode està sincronitzat amb ISO/IEC 10646 (UCS) i conserva mapeigs a estàndards previs (ASCII, ISO 8859-1, ANSI Z39.64, JIS X 0208, KS X 1001, GB 2312, GB 18030, HKSCS, CNS, CNS fabricants.

ASCII enfront d'Unicode : ASCII és un set de 7 bits amb 128 caràcters , suficient per a anglès bàsic, però insuficient per a llengües amb diacrítics, ideogrames o emojis . Unicode cobreix més de 140.000 caràcters i continua augmentant, amb codificació de 8/16/32 bits segons la forma UTF.

ANSI i pàgines de codis : 'ANSI' sol referir-se a pàgines de codis de Windows de 8 bits, limitades i mútuament incompatibles. Un equip a OEM-Latin II que obre text a IBM EBCDIC-Cyrillic veurà caràcters incorrectes. Unicode supera aquest problema amb un repertori únic i conversions sense pèrdua entre les pròpies formes.

Implementació en sistemes (Windows, Solaris) i conversió

Windows empra internament UTF-16 per a les seves API modernes i ofereix funcions com MultiByteToWideChar i WideCharToMultiByte per convertir entre Unicode i pàgines de codis (SBCS/DBCS/MBCS). Si us veieu obligats a convertir una pàgina de codis, hi pot haver pèrdua si no podeu representar tots els caràcters.

Les aplicacions noves a Windows haurien d'usar UTF-16 de forma interna i deixar la conversió a les vores (I/O, protocols), minimitzant la corrupció. Tot i així, Windows manté compatibilitat amb pàgines de codis quan és inevitable.

Oracle Solaris 11, segons la documentació revisada, suporta Unicode 6.0 i ISO/IEC 10646:2011 a nivell de sistema, usant UTF-8 com a format per defecte en els seus conjunts de paràmetres, cosa que estalvia problemes d'ordre de bytes i preserva ASCII de forma transparent.

Unicode a la pràctica: web, documents i programació

A la web, l'usual és servir i emmagatzemar contingut a UTF-8 . En HTML, declara '<meta charset=»UTF-8″>' per garantir compatibilitat, i utilitza entitats numèriques hex quan sigui necessari (exemple: l'euro '&#x20AC;').

  Codeberg: L'Alternativa Lliure i Comunitària a GitHub i GitLab

En Word, podeu inserir símbols Unicode fàcilment col·locant el cursor, anant a Inserir > Símbol, o escrivint el codi i prement Alt+X; així converteixes el valor en el caràcter, seguint les recomanacions habituals. Consulta també la llista de codis Alt per inserir símbols des del teclat.

En llenguatges de programació : a Python 3, les cadenes ja són Unicode; a Java i C#, pots utilitzar fuites '\uXXXX'; a HTML, '&#xXXXX;'. L'important és que l'edició, la compilació i la transmissió utilitzin la mateixa codificació per evitar errors.

Copiar i enganxar símbols funciona si tota la cadena és a Unicode . Si parts usen una altra codificació, poden aparèixer signes d'interrogació, quadres o símbols estranys.

Base de dades de caràcters (UCD), propietats i categories

La Unicode Character Database (UCD) publica per a cada punt de codi el seu nom, categoria, script, propietats de majúscules i minúscules, direccionalitat i altres característiques . Aquesta informació és vital perquè els motors de renderització i processament de text funcionin correctament.

Gràcies a aquestes propietats , diferents components i algorismes (com l'ordenament, la segmentació de paraules o la transformació de majúscules/minúscules) poden comportar-se amb coherència davant de les mateixes dades.

Versions i ampliacions de l'estàndard: fites destacades

Unicode creix amb cada versió , incorporant nous scripts, símbols i emojis. Destaquen les fites de les versions principals: 1.0 el 1991 amb 7.161 caràcters, i les successives ampliacions que han afegit milers de nous símbols, ideogrames, emojis i scripts.

Per exemple, el 2022 , la versió 15.0 va sumar 4.192 ideogrames CJK addicionals i altres elements, aconseguint aproximadament 149.186 caràcters.

Eines per explorar la taula Unicode

Hi ha utilitats gratuïtes per buscar i analitzar caràcters : Unibook Character Browser, SYMBL i Branah.com permeten consultar propietats, noms i blocs de caràcters, facilitant a desenvolupadors i creadors de contingut trobar ràpidament la informació necessària.

Casos d´ús: formularis d´adreces, internacionalització i negoci

Permetre que els usuaris introdueixin adreces en el vostre idioma i script ajuda a reduir errors i millorar l'experiència. També, la interoperabilitat d'Unicode evita problemes en la conversió entre diferents sistemes, mantenint la integritat del text a tota la cadena digital.

Per això, Unicode és l'element fonamental que garanteix que el text romangui final a tota la infraestructura digital , des dels formularis web fins als sistemes de bases de dades i documents impresos, indiferentment si uses 'ñ', àrab, xinès o emojis en una mateixa frase.

La numeració binària
Article relacionat:
La numeració binària: El llenguatge secret dels ordinadors