CODIFICA DEI CARATTERI

Похожие документы
La codifica digitale del testo

La rappresentazione delle informazioni

La Rappresentazione dell Informazione

Il CODICE UNICODE (Prof. M. NASO)

La rappresentazione delle informazioni

La codifica dei caratteri di un testo

Somma di numeri binari

Tabella dei codici ASCII standard

Architettura di un elaboratore. Rappresentazione dell informazione digitale

1.2d: La codifica Digitale dei caratteri

Fondamenti di Informatica

La codifica del testo

Lezione 5 La codifica dei caratteri

Rappresentazione di dati: numerazione binaria. Appunti per la cl. 3 Di A cura del prof. Ing. Mario Catalano

Codifica dell Informazione

Rappresentazione dell Informazione

Il sistema binario: bit e Byte Codifica del testo Il Byte come U.d.M. dell'informazione Multipli del Byte

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono

Codifica dell Informazione

Codifica binaria dell informazione

1.2d: La codifica Digitale dei caratteri

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base

Pag. 1. La Rappresentazione e la Codifica delle informazioni (parte 2) Tipi di dati. Informatica Facoltà di Medicina Veterinaria

Rappresentazione di dati: caratteri. Appunti a cura del prof. Ing. Mario Catalano

Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni

Tipi di elaboratori Rappresentazione della informazione Codifica della informazione

Rappresentazione dell Informazione. Sistemi di Elaborazione delle Informazioni Rappresentazione Informazione 1

Il Modello di von Neumann (2) Prevede 3 entità logiche:

La codifica binaria. Informatica B. Daniele Loiacono

Il trattamento del testo

Rappresentazione dell Informazione

Linguistica Computazionale

INFORMATICA GENERALE. Informatica Generale

LA CODIFICA DELL INFORMAZIONE

CODIFICA DELL INFORMAZIONE E CODICI BINARI

Rappresentazione dell informazione Codifica Binaria

Prof. Maristella Agosti, Ing. Marco Dussin

I CARATTERI E LE STRINGHE

LabVIEW parte II. Ing. Gianfranco Miele November 3, 2010

La codifica dell informazione

Informatica di Base - 6 c.f.u.

Numeri e caratteri in binario. Prof.ssa Antonella Serra

Quante informazioni posso rappresentare con n bit?

Транскрипт:

CODIFICA DEI CARATTERI A lunghezza fissa: 7 bit (ASCII) 8 bit (ISO 8859: Latin-1, Latin-2 Latin-15) A lunghezza fissa: 16, 32 bit (UCS-2, UCS-4) A lunghezza variabile: da 1 a 4 byte (UTF-8 e UTF-16) Si consiglia la lettura http://maxpiano.altervista.org/unicode/intro.php?page=7 Raffaella Gasparotto Set di caratteri appunti novembre 2012 1

Set di caratteri a lunghezza fissa ASCII (American Standard Code for Information Interchange) standard ANSI (X3.4-1968) che definisce valori per 128 caratteri, ovvero 7 bit su 8 (l ottavo bit è utilizzato per il controllo di parità). ASCII possiede 33 caratteri (0-31 e 127) di controllo 8 (BACKSPACE, CR, LF ) Gli altri 95 sono caratteri dell'alfabeto latino, maiuscole e minuscole, numeri e punteggiatura. ISO 8859: Estensioni di ASCII sono state fatte per utilizzare tutti gli 8 bit senza controllo di parità. Lettera T / 1 0 1 0 1 0 0 ASCII 0 1 0 1 0 1 0 0 ISO 8859 Latin 1 2

TABELLE DI CARATTERI UNICODE Al momento sono stati definiti 95'221 caratteri diversi, appartenenti a tre categorie: Script moderni Latin; Greek; Cyrillic; Armenian; Hebrew; Arabic; Syriac; Thaana; Devanagari; Bengali; Gurmukhi; Oriya; Tamil; Telegu; Kannada; Malayalam; Sinhala; Thai; Lao; Tibetan; Myanmar; Georgian; Hangul; Ethiopic; Cherokee; Canadian-Aboriginal Syllabics; Ogham; Runic; Khmer; Mongolian; Han (Japanese, Chinese, Korean ideographs); Hiragana; Katakana; Bopomofo and Yi Script antichi Aegean; Alphabetic and syllabic LTR & RTL; Brahmic; African scripts; Scripts for invented languages; Cuneiform; Undeciphered scripts; North American ideographs and pictograms; Egyptian and Mayan hieroglyphs; Sumerian pictograms; Large Asian scripts; Segni speciali punctuation marks, diacritics, mathematical symbols, technical symbols, arrows, dingbats, etc 3

Character Encoding Tutti I simboli sono rappresentati in una tabella UNICODE. Il CODE POINT è la posizione del carattere nella tabella. Il CODE POINT non è la RAPPRESENTAZIONE del carattere. I due concetti coincidono per L'ASCII (0-127 caratteri), ISO- 8859-1(0-255 caratteri) Windows-1252(0,255) e per il 1- byte UTF-8 (0-127 caratteri) Ma Non lo è per la codifica multi-byte UTF-8.ere.

UTF-8 può rappresentare qualsiasi linguaggio al mondo. COMPLETAMENTE ASCII-compatible, ma non è Latin-1 compatible (..PERCHE??). UTF-8 usa da 1 a 4 byte. Quando usa un solo byte, UTF-8 = ASCII (a 7 bit) E il code point = representation. Esempi di 1-byte UTF-8: A -> 0100 0001 & -> 0010 0110 5 -> 0011 0101

Codifica di caratteri a lunghezza variabile: UTF-8 In generale, il primo byte contiene tanti 1 quanti sono i byte complessivi usati per rappresentare il carattere (lunghezza). 0xxxxxxx UTF-8 110yyyyx 10xxxxxx UTF-8 1110 z z z z 10 z yyyyx 10xxxxxx UTF-8 Il secondo byte o i successivi byte contengono la sequenza: - '10' bit di continuazione seguito da - 6 bit significativi per la rappresentazione del code point 6

Codifica UTF-8 con 2-byte HA code point!= representation visto che il code point viene distribuito nei 2 byte come rappresentato 1 1 0 x x x x x 1 0 x x x x x x Codifica UTF-8 con 3-byte HA code point!= representation visto che il code point viene distribuito nei 3 byte come rappresentato e nel byte più significativo, si pone 1110 1 1 1 0 x x x x 1 0 x x x x x x 1 0 x x x x x x Analogamente la Codifica UTF-8 con 4-byte HA code point!= representation

COME CALCOLARE I BYTE NECESSARI? Range di caratteri UTF-8 octet sequence (hexadecimal) (binary) --------------------------------+--------------------------------------------- 0000 0000-0000 007F 0xxxxxxx 0000 0080-0000 07FF 110xxxxx 10xxxxxx 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx 0001 0000-0010 FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

ESEMPIO CODIFICA UTF-8 La sequenza di caratteri Lällê si codifica in UTF-8 come segue: 76 195 164 108 108 195 170 L ä l l ê ASCII76 UNICODE228 ASCII108 UNICODE234 I codici ASCII dei caratteri L e l vengono preservati così come sono in UTF-8. Il carattere ä ha codice UNICODE 228. Siccome 128 228 2.047, saranno necessari due ottetti (byte) per la sua codifica in UTF-8. Questi ultimi avranno la seguente configurazione: 110xxxxx 10xxxxxx NB: - 11 perché uso 2 byte per la rappresentazione del numero - ora dobbiamo dare un valore alle x mancanti. Raffaella Gasparotto Set di caratteri 2010 9

228 in binario si scrive 11100100 e utilizzando gli 11 bit liberi (quelli indicati con x) otteniamo la rappresentazione binaria 00011100100. A partire dai bit meno significativi (a destra) suddividiamo la rappresentazione binaria di 228 in due parti composte da 6 e 5 bit come segue: 00011100100 00011 100100 Ora siamo in grado di completare la codifica UTF-8 specificando i valori delle singole x come segue: 110 x x x x x 1 0 x x x x x x 0 0 0 1 1 1 0 0 1 0 0 110 0 0 0 1 1 10 1 0 0 1 0 0 (195)10 (164)10 Raffaella Gasparotto Set di caratteri 2010 10

Per il carattere ê (codice UNICODE 234) si procede in modo analogo, a partire dalla sua rappresentazione binaria a 11 bit: 00011101010 = 0 0 0 1 1 U 1 0 1 0 1 0 110 x x x x x 10 x x x x x x 110 0 0 0 1 1 10 1 0 1 0 1 0 (195)10 (170)10 Quindi la codifica binaria finale della sequenza di caratteri Lällê è la seguente: 01001100 L (ASCII 76) 11000011 ä (UNICODE 228) 10100100 01101100 l (ASCII 108) 01101100 l (ASCII 108) 11000011 ê(unicode 234) 10101010 Raffaella Gasparotto Set di caratteri 2010 11

ALTRI ESEMPI Codifica UTF-8 ( code point!= representation)

U+0026, la e commerciale, occupa un byte. U+0416, Cyrillic zhe, sono 2 bytes (in hex): D0, 96. U+4E2D, the Chinese character, sono 3 bytes: E4, B8, AD. U+10346, from the astral plane, sono 4by: F0, 90, 8D, 86.

Cosa significa se compare Niño sostituita da Ni?o Niño sostituita da Ni o Il carattere di sostituzione (spesso un diamante nero con un punto interrogativo bianco) è usato per indicare che il sistema non è in grado di decodificare un flusso di dati in un simbolo corretto. ha Code point U+FFFD e quindi la codifica UTF-8 è 0xEF 0xBF 0xBD (verifica la codifica per esercizio!!)

Si consideri un file di testo contenente la parola tedesca für codificata in ISO-8859-1. Se ora apro questo testo con un editor di testo UTF-8 osservo: 1) il primo byte (f=66) è interpreto correttamente come un f. 2) Il secondo byte (ü=fc) non è un valore legale per l'avvio di qualsiasi caratteri UTF-8 codificato in quanto il bit più significativo non è 0 bensì 1 perchè la ü è codificata ISO-8859-1. QUINDI L'editor di testo UTF-8 sostituisce questo byte non compatibile con il simbolo per avvertire l'utente che qualcosa è andato storto. 3) L'ultimo byte (0x72) è anche nel campo codice 0x00-0x7F e può essere decodificato correttamente. L'intera stringa ora mostra in questo modo: f r

Se ora l'editor di testo UTF-8 salva la parola f r La codifica salvata è 66 EF BF BD 72 Riaprendola con un editor di testo ISO-8859-1, verrà visualizzato in ISO-8859-1 di nuovo come f ï» r 66 EF BF BD 72 È solo un esempio dell'encoding Hell!!!