VersionDateScriptsBlocksTotal Code Points Assigned Code Points Unassigned Code Points Encoded Char. Private Use Char. Non char. Surr. Code Points Graphic.

Slides:



Advertisements
Presentazioni simili
Dall’informazione al linguaggio macchina
Advertisements

Rappresentazioni numeriche
La gestione amministrativa dei periodici in ACNP Parte 2
Fondamenti di Informatica
Classe III A A.s – 2010 Programma di Informatica
Rappresentazioni numeriche
Sistemi di numerazione
Trasmissione delle informazioni
Codifica dei Dati Idea: vogliamo rappresentare dati eterogenei utilizzando un linguaggio che l’elaboratore puo’ facilmente manipolare Essenzialmente vogliamo.
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
CODIFICA DATI/ISTRUZIONI
1 © 1999 Roberto Bisiani Rappresentazione delle informazioni n Occorre un codice n Legato alla tecnologia usata Robustezza Semplicita Economicita.
Programmazione Procedurale in Linguaggio C++
Algebra binaria Luglio 2002 Luglio 2002 Algebra binaria.
Gestione Amministrativa dei Periodici Parte 2 Centro Inter-Bibliotecario – Università di di Bologna Orietta Bonora –
Rappresentazione dei dati e codifica delle informazioni
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
Sistemi Elettronici Programmabili
A.S.E.13.1 ARCHITETTURA DEI SISTEMI ELETTRONICI LEZIONE N° 13 Somma e differenza di due numeri in C2Somma e differenza di due numeri in C2 Half AdderHalf.
A.S.E.6.1 ARCHITETTURA DEI SISTEMI ELETTRONICI LEZIONE N° 6 Complemento a MComplemento a M Rappresentazione di numeri con segnoRappresentazione di numeri.
A.S.E.5.1 ARCHITETTURA DEI SISTEMI ELETTRONICI LEZIONE N° 5 Rappresentazione di numeri con segnoRappresentazione di numeri con segno –Modulo e segno (MS)
Sistemi di Numerazione
Corso di Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Rappresentazione dellinformazione su calcolatore Anno Accademico 2009/2010.
Corso di Informatica (Programmazione)
Settembre 2002IFTS2002 Acq. Dati Remoti: INFORMATICA 1 Rappresentazione dellinformazione (1)
Confronto di due signed (in compl. a 2) Caso 1: numeri dello stesso segno Non ci può essere overflow (sottraendo, viene fuori un numero più piccolo in.
Algoritmi e strutture dati
by Vaccaro Maria Antonietta
Corso di Informatica per Giurisprudenza
I CODICI.
Codici binari decimali
1 Implementazione di Linguaggi 2 Implementazione di Linguaggi 2 Federico Bernardi Type checking 2° parte Type checking 2° parte - Equivalenza di type expressions.
La rappresentazione dellinformazione. 7-2 Digitalizzare linformazione Digitalizzare: rappresentare linformazione per mezzo di cifre (ad es: da 0 a 9)
CAPITOLO 4 LINGUAGGIO JAVA: COSTRUTTI DI BASE. ALFABETO Java adotta la codifica standard Unicode della società Unicode, Inc. (ftp://ftp.unicode.org) definito.
Cos’è un problema?.
Lezione 5 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università
informatica di base per le discipline umanistiche
Il sistema binario.
Codifica binaria Rappresentazione di numeri
Usare rappresentazioni di lunghezza fissa porta ad avere valori non rappresentabili: Overflow indica un errore nella rappresentazione del risultato in.
Conversione binario - ottale/esadecimale
Conversione binario - ottale/esadecimale
1 © 1999 Roberto Bisiani Rappresentazione delle informazioni n Occorre un codice n Legato alla tecnologia usata Robustezza Semplicita Economicita.
Limiti al trasferimento di informazione u Il tempo necessario per trasmettere dellinformazione dipende da: –la velocita di segnalazione (cioe quanto velocemente.
Java base I: Sintassi e tipi di dati
RAPPRESENTAZIONE DELL’INFORMAZIONE
Rappresentazione dell’informazione
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori (Reti Locali, Internet)
RAPPRESENTAZIONE DELL'INFORMAZIONE
Gestione Informatica dei Dati Aziendali
Che cos’è un sistema di numerazione?
CONCETTI DI BASE 1.0 FONDAMENTI 1.1 HARDWARE 1.2 SOFTWARE 1.3 RETI
Informatica Avanzata Trattamento di Foto e Immagini Digitali UNI3 - NICHELINO Lez. N Gennaio 2009 di Pautasso Luciano Lez. N.
TCP/IP.
Digitale!!. Musica satellite (TV GPS) Telefoni rete telefonica, internet Video (DVD)
ECDL Patente europea del computer
Codifica dei dati in un elaboratore elettronico
Linguaggi e Programmazione per l’Informatica Musicale
I computer vengono utilizzati per automatizzare la soluzione di problemi di varia natura trattando le informazioni in entrata (DATI) eseguendo gli opportuni.
Rappresentazione dell’Informazione
Rappresentazione dell’informazione nel calcolatore.
Informatica Docente : Jeremy Sproston Orario: Gruppo 1: (gli studenti i cui cognomi iniziano con la lettera A fino alla lettera L (inclusi)) Lunedì ore.
Informatica Lezione 3 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
I set di caratteri Fabio Vitali. Fabio Vitali - Almaweb Introduzione Qui esaminiamo in breve: Il problema della codifica dei caratteri ASCII (7.
Informatica Lezione 3 Psicologia dello sviluppo e dell'educazione (laurea magistrale) Anno accademico:
Codifica dei numeri Il codice ASCII consente di codificare le cifre decimali da “0” a “9” fornendo in questo modo una rappresentazione dei numeri Per esempio:
Lezione 2 : Basi del linguaggio Variabili. Come visto nella lezione 1 le classi registrano il proprio stato nelle variabili  int cadenza = 0;  int velocita.
Transcript della presentazione:

VersionDateScriptsBlocksTotal Code Points Assigned Code Points Unassigned Code Points Encoded Char. Private Use Char. Non char. Surr. Code Points Graphic Char. Format Char. Control Char October ,53612,79552,7417,1615,632207, June ,53634,50531,03128,3596, , June ,53640,63524,90134,2336, , July ,114,112178,500935,61238,950137,468342,04838, May ,114,112178,502935,61038,952137,468342,04838, September ,114,112188,809925,30349,259137,468342,04849, March ,114,112233,787880,32594,205137,468662,04894, March ,114,112234,803879,30995,221137,468662,04895, April ,114,112236,029878,08396,447137,468662,04896, March ,114,112237,302876,81097,720137,468662,04897, July ,114,112238,671875,44199,089137,468662,04898, April ,114,112240,295873,817100,713137,468662,048100, October ,114,112246,943867,169107,361137,468662,048107, October ,114,112249,031865,081109,449137,468662,048109, January ,114,112249,763864,349110,181137,468662,048109,

Principi Unicode Universalità Universalità Efficienza Efficienza Importanza ai caratteri e non ai glifi Importanza ai caratteri e non ai glifi Semantica Semantica Plain text Plain text Ordine logico Ordine logico Unificazione Unificazione Composizione dinamica Composizione dinamica Stabilità Stabilità Convertibilità (round trip conversion) Convertibilità (round trip conversion)

Tipi di code points Assigned Assigned Graphic Sono i normali caratteri visibili (sia nel BMP che fuori dal BMP)Graphic Sono i normali caratteri visibili (sia nel BMP che fuori dal BMP) Combining Caratteri di composizione (con i caratteri normali)Combining Caratteri di composizione (con i caratteri normali) Format Caratteri invisibili di formattazione (spazi, line feed, etc..)Format Caratteri invisibili di formattazione (spazi, line feed, etc..) Control Caratteri di controllo: backspace, bell, etc.., difficilmente distinguibili dai caratteri di formattazioneControl Caratteri di controllo: backspace, bell, etc.., difficilmente distinguibili dai caratteri di formattazione Surrogate Hanno un significato specifico per la codifica UTF-16, servono a mappare code points fuori dal BMP utilizzati in coppie alto-basso (high-low)Surrogate Hanno un significato specifico per la codifica UTF-16, servono a mappare code points fuori dal BMP utilizzati in coppie alto-basso (high-low) Private Use Possono essere utilizzati dalle applicazioni e dai vendor (mela della Apple, icone di Whatsapp, etc..) Private Use Possono essere utilizzati dalle applicazioni e dai vendor (mela della Apple, icone di Whatsapp, etc..) Noncharacter Non deve corrispondere a nessun carattere e non dovrà mai essere utilizzato per rappresentare qualcosa di significativo: se appare in un flusso di dati deve essere trattato come un errore… Noncharacter Non deve corrispondere a nessun carattere e non dovrà mai essere utilizzato per rappresentare qualcosa di significativo: se appare in un flusso di dati deve essere trattato come un errore… Unassigned (o reserved) Potrà essere utilizzato in versioni future dello standard Unassigned (o reserved) Potrà essere utilizzato in versioni future dello standard

La notazione U+nnnn I caratteri Unicode sono normalmente riferiti con la notazione U+nnnn, dove nnnn è una notazione in cifre esadecimali del valore numerico del code point I caratteri Unicode sono normalmente riferiti con la notazione U+nnnn, dove nnnn è una notazione in cifre esadecimali del valore numerico del code point U+0020 ad esempio denota il normale spazio ASCII U+0020 ad esempio denota il normale spazio ASCII Tale notazione non fa riferimento ad alcuna codifica in particolare Tale notazione non fa riferimento ad alcuna codifica in particolare Usualmente si usano 4 cifre, che bastano a coprire tutto il BMP Usualmente si usano 4 cifre, che bastano a coprire tutto il BMP Per caratteri fuori dal BMP si possono usare fino a 6 cifre esadecimali Per caratteri fuori dal BMP si possono usare fino a 6 cifre esadecimali Ad esempio: U Ad esempio: U+13080

Lo standard Unicode Core specifications Core specifications Code charts Code charts Public Database Public Database Unicode Tecnical Reports Unicode Tecnical Reports UAX (annessi allo standard)UAX (annessi allo standard) UTS (technical standards): SCSU, CollationUTS (technical standards): SCSU, Collation UTRUTR Drafts, altro...Drafts, altro...

Caratteristiche dei caratteri CodeDescriptionSample character LuLetter, uppercaseA LlLetter, lowercasea LtLetter, titlecase Dž (U+01C5) LmLetter, modifier ʰ (U+02B0) LoLetter, other (including ideographs)א (alef, U+05D0) MnMark, nonspacing̀ (U+0300) McMark, spacing combining (U+0903) MeMark, enclosing(U+06DE) ۞ NdNumber, decimal digit1 NlNumber, letter (U+2163) NoNumber, other½ (U+00BD) ZsSeparator, space(space, U+0020) ZlSeparator, line(line separator, U+2028) ZpSeparator, paragraph(paragraph separator, U+2029) CcOther, control(carriage return, U+000D) CfOther, format(soft hyphen, U+00AD) CsOther, surrogate(surrogate code points) CoOther, private use(U+E000) Cn Other, not assigned (including noncharacters) (U+FFFF, not a character) PcPunctuation, connector_ (low line, U+005F) PdPunctuation, dash- (hyphen-minus, U+002D) PsPunctuation, open( PePunctuation, close) PiPunctuation, initial quote" (U+201C) PfPunctuation, final quote" (U+201D) PoPunctuation, other! SmSymbol, math+ ScSymbol, currency$ SkSymbol, modifier^ (circumflex accent, 0+005E) SoSymbol, other© General categories Le caratteristiche dei caratteri sono definite in una serie di database in formato ASCII ( !!) distribuiti dallUnicode Consortium

Code charts I glifi esemplificativi vengono rilasciati nei code charts in PDF (oltre 2000 pagine) Esistono diversi siti che raccolgono varie informazioni sui caratteri in maniera omogenea

Unicode utilities

Letter Database

Fileformat.info

Uniview

Mappe caratteri GNOME MAC BabelMap

Unicode conformance Unicode characters don't fit in 8 bits; deal with it. Unicode characters don't fit in 8 bits; deal with it. 2 Byte order is only an issue in I/O. 2 Byte order is only an issue in I/O. If you don't know, assume big-endian. If you don't know, assume big-endian. Loose surrogates have no meaning. Loose surrogates have no meaning. Neither do U+FFFE and U+FFFF. Neither do U+FFFE and U+FFFF. Leave the unassigned codepoints alone. Leave the unassigned codepoints alone. It's OK to be ignorant about a character, but not plain wrong. It's OK to be ignorant about a character, but not plain wrong. Subsets are strictly up to you. Subsets are strictly up to you. Canonical equivalence matters. Canonical equivalence matters. Don't garble what you don't understand. Don't garble what you don't understand. Process UTF-* by the book. Process UTF-* by the book. Ignore illegal encodings. Ignore illegal encodings. Right-to-left scripts have to go by bidi rules Right-to-left scripts have to go by bidi rules

Supporto dei caratteri Unicode Limplementazione di Unicode è un processo lungo e graduale Limplementazione di Unicode è un processo lungo e graduale Anche nelle circostanze in cui Unicode è supportato, tale supporto normalmente non copre tutti i caratteri Unicode (e, soprattutto, non copre tutte le caratteristiche descritte dagli annessi tecnici allo standard) Anche nelle circostanze in cui Unicode è supportato, tale supporto normalmente non copre tutti i caratteri Unicode (e, soprattutto, non copre tutte le caratteristiche descritte dagli annessi tecnici allo standard) Nelle comunicazioni e trasferimento dati è essenziale conoscere quali caratteri il mittente e il destinatario sono in grado di gestire e riconoscere Nelle comunicazioni e trasferimento dati è essenziale conoscere quali caratteri il mittente e il destinatario sono in grado di gestire e riconoscere Per tale motivo alcuni sottoinsiemi specifici di Unicode sono stati definiti formalmente Per tale motivo alcuni sottoinsiemi specifici di Unicode sono stati definiti formalmente Multilingual Europan Subsets (MES-1, … MES-3) Multilingual Europan Subsets (MES-1, … MES-3) Microsoft definisce i suoi Windows Glyph List. Particolarmente importante il WGL4 (Paneuropeo) Microsoft definisce i suoi Windows Glyph List. Particolarmente importante il WGL4 (Paneuropeo)

Codifiche Unicode Unicode definisce tre codifiche (in 5 varianti complessive) per mappare i code point in sequenze di ottetti Unicode definisce tre codifiche (in 5 varianti complessive) per mappare i code point in sequenze di ottetti UTF-32 è la più semplice: utilizza 32 bit, ovvero 4 byte, per ciascun carattere, in maniera estremamente inefficiente dal punto di vista dello spazio, ma molto semplice: ogni sequenza di ottetti ha il valore numerico del code point UTF-32 è la più semplice: utilizza 32 bit, ovvero 4 byte, per ciascun carattere, in maniera estremamente inefficiente dal punto di vista dello spazio, ma molto semplice: ogni sequenza di ottetti ha il valore numerico del code point Il valore numerico dipende dalla endianness della codifica (qual è il byte più significativo nella sequenza di 4 byte) Il valore numerico dipende dalla endianness della codifica (qual è il byte più significativo nella sequenza di 4 byte) UCS-2 è una codifica più vecchia che utilizza 2 byte per ciascun carattere e si limita al BMP (è ISO e non standard Unicode) UCS-2 è una codifica più vecchia che utilizza 2 byte per ciascun carattere e si limita al BMP (è ISO e non standard Unicode) UTF-16 estende UCS-2, sempre con 2 byte per carattere, ma utilizzando coppie di alcuni particolari code point nel BMP (i surrogates) per indirizzare i code point fuori dal BMP secondo un particolare algoritmo UTF-16 estende UCS-2, sempre con 2 byte per carattere, ma utilizzando coppie di alcuni particolari code point nel BMP (i surrogates) per indirizzare i code point fuori dal BMP secondo un particolare algoritmo Anche in UTF-16 occorre tenere conto della endianness Anche in UTF-16 occorre tenere conto della endianness UTF-8 è una codifica a numero variabile di byte, progettata per retrocompatibilità con ASCII, senza problemi di endianness e in grado di coprire tutto lo spazio Unicode (e già pronta per una eventuale estensione) UTF-8 è una codifica a numero variabile di byte, progettata per retrocompatibilità con ASCII, senza problemi di endianness e in grado di coprire tutto lo spazio Unicode (e già pronta per una eventuale estensione) IETF richiede che tutti i protocolli Internet identifichino lencoding utilizzato e che ci sia sempre almeno il supporto per UTF-8 IETF richiede che tutti i protocolli Internet identifichino lencoding utilizzato e che ci sia sempre almeno il supporto per UTF-8 UTF-7 è una codifica (non standard Unicode) che utilizza solo ottetti con il primo bit sempre a 0 (come se utilizzasse solo 7 bit) mappando i caratteri fuori dal blocco ASCII con sequenze di escape (oltre ai caratteri ASCII utilizzati per iniziare e terminare la stessa sequenza di escape) UTF-7 è una codifica (non standard Unicode) che utilizza solo ottetti con il primo bit sempre a 0 (come se utilizzasse solo 7 bit) mappando i caratteri fuori dal blocco ASCII con sequenze di escape (oltre ai caratteri ASCII utilizzati per iniziare e terminare la stessa sequenza di escape) Esistono ulteriori codifiche e varianti (non standard Unicode) di quelle appena viste (CESU-8, Modified UTF-8, UTF-EBCDIC, SCSU, BOCU) Esistono ulteriori codifiche e varianti (non standard Unicode) di quelle appena viste (CESU-8, Modified UTF-8, UTF-EBCDIC, SCSU, BOCU) E UTF-24 che fine ha fatto? E UTF-24 che fine ha fatto?

pâté 70E274E9 ISO C3A274C3A9 UTF E E9 UTF E E9 00 UTF-16LE 702B414F492D742B414F6B2D UTF E E9 UTF-32

UTF-32 è ! M U E 2D U+4E2D AC U+20AC E U+00E U D U+004D Hex UTF-32 Binary UTF-32 Binary codepoint (21 bit) Carattere

UTF-16 è ! M U E 2D U+4E2D 20 AC U+20AC 00 E U+00E U D U+004D Hex UTF-16 Binary UTF-16 Binary codepoint (21 bit) Carattere FAIL!!

UTF-16: U to U+10FFFF Si sottrae 0x10000 dal code point, ottenendo un numero a 20 bit nel range 0..0xFFFFF. Si sottrae 0x10000 dal code point, ottenendo un numero a 20 bit nel range 0..0xFFFFF. I primi 10 bit si aggiungono a 0xD800 ottenendo la prima code unit o lead surrogate, che sarà nel range 0xD800..0xDBFF (high surrogates) I primi 10 bit si aggiungono a 0xD800 ottenendo la prima code unit o lead surrogate, che sarà nel range 0xD800..0xDBFF (high surrogates) I restanti 10 bit si aggiungono a 0xDC00 ottenendo la seconda code unit o trail surrogate, che sarà nel range 0xDC00..0xDFFF (low surrogates) I restanti 10 bit si aggiungono a 0xDC00 ottenendo la seconda code unit o trail surrogate, che sarà nel range 0xDC00..0xDFFF (low surrogates) Ottengo una coppia di code points lead surrogate + trail surrogate che codifico come prima con 2 byte Ottengo una coppia di code points lead surrogate + trail surrogate che codifico come prima con 2 byte I code points da U+D800 to U+DFFF non possono essere usati per altri scopi I code points da U+D800 to U+DFFF non possono essere usati per altri scopi I range per lead surrogates, trail surrogates, e caratteri BMP sono disgiunti, le ricerche sono semplificate I range per lead surrogates, trail surrogates, e caratteri BMP sono disgiunti, le ricerche sono semplificate UCS-2 è una codifica identica a UTF-16, ma senza il meccanismo dei surrogati (codifica solo il BMP) UCS-2 è una codifica identica a UTF-16, ma senza il meccanismo dei surrogati (codifica solo il BMP)

UTF-16 per U D D D C 0 0 D C D 8 0 C D 8 0 C D C 8 0 D C 8 0 D8 0C DC 80 (big endian)

UTF-8 New Jersey - 2 settembre 1992 BitsLast code pointByte 1Byte 2Byte 3Byte 4Byte 5Byte 6 7U+007F 0xxxxxxx 11U+07FF 110xxxxx10xxxxxx 16U+FFFF 1110xxxx10xxxxxx 21U+1FFFFF 11110xxx10xxxxxx 26U+3FFFFFF xx10xxxxxx 31U+7FFFFFFF x10xxxxxx Ken Thompson Rob Pike

UTF-8: descrizione BitsLast code pointByte 1Byte 2Byte 3Byte 4Byte 5Byte 6 7U+007F 0xxxxxxx 11U+07FF 110xxxxx10xxxxxx 16U+FFFF 1110xxxx10xxxxxx 21U+1FFFFF 11110xxx10xxxxxx 26U+3FFFFFF xx10xxxxxx 31U+7FFFFFFF x10xxxxxx Per i caratteri del set ASCII utilizza un solo byte, identico a quello che si usa in ASCII (il bit più significativo è sempre a 0) Codepoints oltre il 127 sono rappresentati con sequenze multibyte, composte da un byte principale (leading byte) e uno o più byte di continuazione. Il leading byte ha due o più bit high-order a 1; i byte di continuazione cominciano sempre con 10. Il numero dei bit a 1 nel leading byte di una sequenza multibyte indica il numero di byte della sequenza stessa: la lunghezza della sequenza può essere determinata senza dover esaminare lintera sequenza Single byte, leading byte e continuation byte non possono mai avere lo stesso valore: lo schema è auto-sincronizzante. Si può trovare linizio di un carattere tornando indietro al massimo di 5 byte (3 byte nellimplementazione attuale)

UTF-8: esempi è ! M F XXX 10XXXXXX 10XXXXXX 10XXXXXX U+13080>FFFF E4 B8 AD 1110XXXX 10XXXXXX 10XXXXXX U+4E2D0800-FFFF E2 82 AC 1110XXXX 10XXXXXX 10XXXXXX U+20AC0800-FFFF C3 A U+00E FF U+0021<007F 4D U+004D<007F Hex UTF-8 Binary UTF-8 Binary codepoint Carattere XXXXXXX XXXXXXX 110XXXXX 10XXXXXX

UTF-8: vantaggi In generale In generale Retrocompatibilità con ASCII (porta con sé molti vantaggi)Retrocompatibilità con ASCII (porta con sé molti vantaggi) Può essere riconosciuto con metodi euristici più facilmente di altri encodingPuò essere riconosciuto con metodi euristici più facilmente di altri encoding Può essere esteso (anche oltre i 31 bit!)Può essere esteso (anche oltre i 31 bit!) Rispetto ad altre codifiche single-byte Rispetto ad altre codifiche single-byte Può rappresentare qualunque carattere UnicodePuò rappresentare qualunque carattere Unicode I byte 0xFE e 0xFF non possono mai comparire (BOM UTF-16, Telnet)I byte 0xFE e 0xFF non possono mai comparire (BOM UTF-16, Telnet) Rispetto ad altre codifiche multi-byte Rispetto ad altre codifiche multi-byte Estensione propria ad ASCII come se fosse una single-byteEstensione propria ad ASCII come se fosse una single-byte AutosincronizzanteAutosincronizzante Consente luso di algoritmi di ricerca stringa byte-orientedConsente luso di algoritmi di ricerca stringa byte-oriented Efficienza della codifica (operazioni sui bit)Efficienza della codifica (operazioni sui bit) Rispetto a UTF-16 Rispetto a UTF-16 Nessun problema di endianness (è byte ordered)Nessun problema di endianness (è byte ordered) Più sicuro (per la presenza di sequenze di byte vietate)Più sicuro (per la presenza di sequenze di byte vietate) Più facile implementare la retrocompatibilità su determinati vecchi programmi (grazie alla retrocompatibilità con ASCII)Più facile implementare la retrocompatibilità su determinati vecchi programmi (grazie alla retrocompatibilità con ASCII) Caratteri fuori dal BMP non sono casi specialiCaratteri fuori dal BMP non sono casi speciali Dimensioni (in byte totali) generalmente più piccole di UTF-16 (sempre vero con code points < U+0800)Dimensioni (in byte totali) generalmente più piccole di UTF-16 (sempre vero con code points < U+0800)

UTF-8: svantaggi In generale In generale Un parser UTF-8 non perfettamente compatibile potrebbe consentire un certo tipo di attacchi basati su una codifica multibyte vietata equivalente a una sequenza single-byte di un carattere non consentito (attacchi a Web server bacati nel 2001)Un parser UTF-8 non perfettamente compatibile potrebbe consentire un certo tipo di attacchi basati su una codifica multibyte vietata equivalente a una sequenza single-byte di un carattere non consentito (attacchi a Web server bacati nel 2001) In mancanza di BOM e altre indicazioni può essere indistinguibile da ASCII e da ISO rendendo impossibile per i programmi determinare automaticamente la codifica e provocando mal di testa nei programmatoriIn mancanza di BOM e altre indicazioni può essere indistinguibile da ASCII e da ISO rendendo impossibile per i programmi determinare automaticamente la codifica e provocando mal di testa nei programmatori Rispetto ad altre codifiche single-byte Rispetto ad altre codifiche single-byte Il testo codificato in UTF-8 richiede in generale più spazio (in byte) rispetto alla codifica più appropriata per determinati script. (Particolari critiche in India: x3)Il testo codificato in UTF-8 richiede in generale più spazio (in byte) rispetto alla codifica più appropriata per determinati script. (Particolari critiche in India: x3) Essendo una codifica multi-byte a lunghezza variabile diventa più difficile determinare la lunghezza in caratteri di una stringa (ed effettuare estrazione di sottostringhe)Essendo una codifica multi-byte a lunghezza variabile diventa più difficile determinare la lunghezza in caratteri di una stringa (ed effettuare estrazione di sottostringhe) Rispetto ad altre codifiche multi-byte Rispetto ad altre codifiche multi-byte Anche rispetto ad altre codifiche multibyte può richiedere più spazio per determinati scriptAnche rispetto ad altre codifiche multibyte può richiedere più spazio per determinati script Rispetto a UTF-16 Rispetto a UTF-16 Stesso problemaStesso problema

UTF-8: codepage layout

UTF-8: sequenze non valide I byte rossi nella tavola precedente I byte rossi nella tavola precedente Un byte di continuazione inatteso Un byte di continuazione inatteso Uno start byte non seguito dal numero previsto di byte di continuazione Uno start byte non seguito dal numero previsto di byte di continuazione Una sequenza la cui decodifica rappresenta un code point per il quale esiste una sequenza di codifica più corta Una sequenza la cui decodifica rappresenta un code point per il quale esiste una sequenza di codifica più corta Una sequenza di 4 byte che codifica un code point oltre il U+10FFFF Una sequenza di 4 byte che codifica un code point oltre il U+10FFFF

UTF-8: code points non validi I code point surrogati (da U+D800 a U+DFFF) NON possono essere a loro volta codificati in UTF-8: il loro utilizzo è riservato a UTF-16 I code point surrogati (da U+D800 a U+DFFF) NON possono essere a loro volta codificati in UTF-8: il loro utilizzo è riservato a UTF-16 In altre parole, per codificare i code point fuori dal BMP in UTF-8 si deve utilizzare la sequenza prevista UTF-8 (di 4 byte) In altre parole, per codificare i code point fuori dal BMP in UTF-8 si deve utilizzare la sequenza prevista UTF-8 (di 4 byte) Codificare i code point surrogati in UTF-8 significherebbe applicare una doppia codifica Codificare i code point surrogati in UTF-8 significherebbe applicare una doppia codifica