diumenge, 23 d’agost del 2020

Caràcters multibytes

{L'H', L'o', L'l', L'a', L'!', 0}

caràcters multibytes

En el codi ordinari ASCII, una seqüència de caràcters és una seqüència d'octals i cada personatge és un byte. Això és molt senzill, però permet només 256 caràcters diferents.

En un codi de caràcters multibyte , una seqüència de caràcters és una seqüència d'octal, però cada caràcter pot ocupar un o més bytes consecutius de la seqüència.

Hi ha moltes maneres diferents de dissenyar un codi de caràcters multibyte; diferents sistemes utilitzen codis diferents. Especificar un codi determinat significa designar les seqüències de bytes bàsiques (aquelles que representen un sol caràcter) i quins caràcters es diferencien. Un codi que un ordinador pot utilitzar realment ha de tenir un nombre finit d’aquestes seqüències bàsiques, i normalment cap d’elles té més de uns quants caràcters.

No és necessari que totes aquestes seqüències tinguin la mateixa longitud. De fet, molts d’ells tenen una durada de només un byte. Com que els caràcters bàsics ASCII de l'interval des 0 de 0177són tan importants que es distingeixen per si mateixos en tots els codis de caràcters multibyte. És a dir, un byte el valor és 0 a través 0177 sempre és un personatge en si mateix. Els caràcters que són més d'un byte han de començar sempre amb un byte en el rang des del 0200 final 0377.

El valor de byte 0 s’utilitza sovint en una cadena de caràcters ASCII.

L'especificació de les seqüències de bytes bàsics que representen caràcters únics dóna automàticament significats a moltes seqüències de bytes més llargues, com a més d'un caràcter. Per exemple, si la seqüència de dos bytes 0205 049 significa la lletra grega alfa, 0205 049 065 ha de ser una alfa seguida d'una`A '(Codi ASCII 065) i 0205 049 0205 049ha de contenir dues alfes seguides.


"Si qualsevol seqüència de bytes pot tenir més d’un significat com a seqüència de caràcters, el codi multibyte és ambigu i no és bo."

A la majoria de codis, hi ha certes seqüències d’octals que no tenen significat com a caràcter. Es diu que no són vàlids .

Un caràcter multibyte és un caràcter compost per seqüències d'un o més bytes. 

Cada seqüència de bytes representa un únic caràcter en el joc de caràcters estesos. Els caràcters multibyte s'utilitzen en jocs de caràcters com ara Kanji.

Els caràcters amples són codis de caràcters multilingües amb un ample invariable de 16 bits. El tipus de les constants de caràcters és char; per als caràcters amples el tipus és wchar_t. Com que els caràcters amples sempre són de grandària fixa, amb els caràcters amples es simplifica la programació amb jocs de caràcters internacionals.

El literal de cadena de caràcter ample L "Hola!" es converteix en una matriu de sis sencers de tipus wchar_t.

{L'H', L'o', L'l', L'a', L'!', 0}

 

L'especificació Unicode és l'especificació de caràcters amples. Les rutines de la biblioteca en temps d'execució per traduir caràcters multibyte i amples inclouen mbstowcs, mbtowc, wcstombs i wctomb.


Més informació ->  Estructures stdlib
Més informació -->  Manipulació memòries multibytes
Més informació ->  llibreria <stdlib.h>