=head1 NOME perluniintro - introduzione a Unicode in Perl =head1 DESCRIZIONE Questo documento fornisce un'idea generale di Unicode e di come usarlo in Perl. =head2 Unicode Unicode E uno standard per la codifica dei caratteri che progetta di codificare tutti i metodi di scrittura del mondo, e molti altri simboli ancora. Unicode e ISO/IEC 10646 sono due standard coordinati che forniscono "code point" per ciascun carattere di praticamente tutti gli standard di codifica carattere moderni, coprendo oltre 30 sistemi di scrittura e centinaia di linguaggi, inclusi tutti i linguaggi moderni di importanza commerciale. Sono codificati anche tutti i caratteri dei voluminosi dizionari cinesi, giapponesi e coreani. Lo standard arriverE a coprire sostanzialmente tutti i caratteri di oltre 250 sistemi di scrittura e di migliaia di linguaggi. Unicode 1.0 E stato rilasciato in Ottobre 1991, e la 4.0 in Aprile 2003. Un I Unicode E un'entitE astratta. Non E limitato da alcuna particolare dimensione dei tipi interi, in particolare non E limitato al C del linguaggio C. Unicode E indipendente dal linguaggio e dall'aspetto grafico: non codifica la lingua del testo e non definisce font o altri dettagli di rappresentazione grafica. Unicode si occupa di caratteri e di testi composti da tali caratteri. Unicode definisce caratteri come C (``lettera A latina maiuscola'', NdT), o C (``lettera alpha greca minuscola'', NdT), e numeri univoci per tali caratteri, in questo caso 0x0041 e 0x03B1, rispettivamente. Questi numeri univoci sono chiamati I ("punti codice", NdT). Lo standard Unicode preferisce usare la notazione esadecimale per i code point. Se numeri come C<0x0041> vi sono poco familiari, date un'occhiata alla sezione L, piE sotto. Lo standard Unicode usa la notazione C, per indicare il code point esadecimale e il nome normativo del carattere. Unicode definisce altresE svariate I> dei caratteri, come "maiuscolo" o "minuscolo", "cifra decimale", o "punteggiatura"; queste proprietE sono indipendenti dal nome dei caratteri. Inoltre, alcune operazioni sui caratteri, come conversioni tra maiuscole e minuscole, e "collazione" (ordinamento), sono definite dallo standard. Un carattere Unicode puE cosistere di un singolo code point, oppure di un I (ad esempio C), seguito da uno o piE I (ad esempio C "accento acuto da combinare"). Questa sequenza di carattere base e modificatori viene chiamata I ("I" in inglese, NdT). Se chiamare o no queste sequenze "caratteri" dipende dal vostro punto di vista. Se siete un programmatore, probabilmente tenderete a vedere ciascun elemento della sequenza come una unitE distinta, o "carattere". D'altro canto, l'intera sequenza puE essere vista come "carattere" dal punto di vista dell'utente, poichE probabilmente viene considerata tale nel contesto della sua lingua. Secondo questa visione dei caratteri come "l'intera sequenza", il numero totale di caratteri E un concetto poco chiaro. Ma nell'idea del programmatore, "ciascuna unitE E un carattere", il concetto di "carattere" E molto piE deterministico. In questo documento, assumiamo questo secondo punto di vista: un "carattere" E un code point Unicode, sia un carattere base o un carattere da combinare. Per alcune combinazioni, esistono caratteri I. C ("lettera A latina maiuscola con accento acuto", NdT), ad esempio, E definito come singolo code point. Questi caratteri precombinati, comunque, esistono solo per alcune combinazioni, e sono previsti principalmente per supportare conversioni avanti-e-indietro tra Unicode e standard precedenti (come ad esempio i vari ISO 8859). Nel caso generale, il metodo di composizione E piE estendibile. Per supportare conversioni tra i vari modi di comporre i caratteri, sono state definite varie I ("I" in inglese, NdT) per produrre rappresentazioni uniformi. Per mantenere la compatibilitE con le codifiche precedenti, l'idea di "un numero unico per ciascun carattere" non si realizza del tutto: invece, c'E "almeno un numero per ciascun carattere". Lo stesso carattere potrebbe essere rappresentato in modo diverso in diverse codifiche. Neppure l'inverso E sempre vero: alcuni code point non hanno un corrispondente carattere assegnato. In primo luogo, esistono code point non allocati all'interno di blocchi altrimenti usati. In secondo luogo, ci sono speciali caratteri di controllo Unicode che non rappresentano veri e propri "caratteri". Un'idea diffusa relativamente a Unicode sostiene che sia "a 16 bit", ovvero, che Unicode sia rappresentato da C<0x10000> (ovvero 65536) caratteri, da C<0x0000> a C<0xFFFF>. B<< CiE E falso. >> A partire dalla versione 2.0 (Luglio 1996), Unicode E stato definito fino a 21 bit (C<0x10FFFF>), e dalla versione 3.1 (Marzo 2001) sono stati definiti caratteri oltre C<0xFFFF>. I primi C<0x10000> caratteri sono chiamati il I, o I (BMP). Con Unicode 3.1, sono definiti in totale 17 piani, anche se ancora non sono affatto pieni di caratteri definiti. Un'altra idea diffusa E che i blocchi di 256 caratteri abbiamo qualcosa a che vedere con le lingue -- che ciascun blocco definisca i caratteri usati in una lingua o insieme di lingue. B<< Neanche questo E vero. >> La divisione in blocchi esiste, ma E quasi del tutto accidentale -- un effetto collaterale del modo con cui i caratteri sono stati, e sono ancora, allocati. Invece, esiste il concetto di I