CODIFICA DEL TESTO 0???????

Documenti analoghi
1. CODIFICHE DEL TESTO 2. CODIFICA ASCII. codice ASCII carattere '0' '1' '2' '3' '4' '5' '6' '7' '8' '9'

Alfabeto ed elementi lessicali del linguaggio C

Rappresentazione dell informazione

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

Argomenti trattati. Informazione Codifica Tipo di un dato Rappresentazione dei numeri Rappresentazione dei caratteri e di altre informazioni

1.2d: La codifica Digitale dei caratteri

Rappresentazione binaria delle variabili (int e char)

La rappresentazione delle informazioni

La Rappresentazione dell Informazione

I set di caratteri WWW. Fabio Vitali 5 novembre 1999

Caratteri e stringhe

Informatica di Base 1 Linea 1

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

Modulo 1: Le I.C.T. UD 1.2d: La codifica Digitale dei caratteri

La codifica digitale del testo

Laboratorio di Algoritmi e Strutture Dati

Sintassi: Per la dichiarazione di variabili dei tipi fondamentali:

Fondamenti di Informatica Esercizi settimanali n. 3 01/10/2009 SOLUZIONI PROPOSTE

La codifica dei caratteri di un testo

Somma di numeri binari

La codifica binaria. Informatica B. Daniele Loiacono

Rappresentazione dei numeri naturali. La codifica associa alle informazioni dell alfabeto sorgente uno o più simboli dell alfabeto codice:

1.2d: La codifica Digitale dei caratteri

Fondamenti di Informatica

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

Rappresentazione dell Informazione

Struttura dei programmi C

La codifica del testo

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono

Lettura da tastiera e scrittura su monitor

Introduzione al Linguaggio C

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

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII.

La codifica digitale

Alfabeto ed elementi lessicali del linguaggio C

Input/Output di numeri

La rappresentazione dell informazione

19/09/14. Il codice ASCII. Altri codici importanti. Extended ASCII. Tabella del codice ASCII a 7 bit. Prof. Daniele Gorla

Tecnologie per il web e lo sviluppo multimediale. Rappresentazione delle informazioni

Linguaggio C Variabili e tipi di dato

La rappresentazione delle Informazioni

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2

Un quadro della situazione. Lezione 6 Aritmetica in virgola mobile (2) e Codifica dei caratteri. Dove siamo nel corso. Organizzazione della lezione

Corso di Laurea in Scienze e Tecnologie Chimiche corso di Informatica Generale

La codifica binaria. Informatica B. Daniele Loiacono

Rappresentazione dell informazione

Corso di Informatica

Tipi di dato primitivi

Codifica informazione testuale

Primi passi col linguaggio C

Codici per caratteri. Codifica dei caratteri. Molti codici: Codice ASCII

CODIFICA DEI CARATTERI

Codifica dell'informazione

Rapida Nota sulla Rappresentazione dei Caratteri

Seconda lezione. Rivediamo un po di definizioni principali Proseguiremo con nuovi codici

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

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

Corso di Fondamenti di Programmazione canale E-O. Tipi di dato. Un esempio

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base

Lezione 3. I numeri relativi

Esame di Informatica. Facoltà di Scienze Motorie LE UNITA DI MISURA (1/4) LE UNITA DI MISURA (3/4) LE UNITA DI MISURA (2/4) Lezione 2

Introduzione alla programmazione in C(++)

Rappresentazione digitale delle informazioni

Lab 02 Tipi semplici in C

Rappresentazione binaria

Programma del corso. Rappresentazione delle Informazioni. Introduzione agli algoritmi. Architettura del calcolatore. Elementi di Programmazione

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Modulo 1. Concetti base della Tecnologia dell informazione. Prof. Nicolello Cristiano. Modulo 1

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010

Introduzione alle stringhe e algoritmi collegati

Linguaggio C. Tipi predefiniti. Università degli Studi di Brescia. Prof. Massimiliano Giacomin. Prof. M. Giacomin

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

La "macchina" da calcolo

Rappresentazione dell informazione

Tipi di dato. Le variabili in C. Problema: dato in input un carattere, se esso è una lettera minuscola, trasformarla in maiuscola.

La Rappresentazione dell Informazione. Prof.Ing.S.Cavalieri

Copyright (c) 2008, 2009, 2012 Fabio Proietti

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

La codifica dell informazione

Un ripasso di aritmetica: Conversione dalla base 10 alla base 2

Sistemi di Elaborazione delle Informazioni

Rappresentare testi nel computer

Rappresentazione delle Informazioni. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Informatica! Appunti dal laboratorio 1!

Indovina la lettera...

1 Esercizio. 2 Esercizio

Tipi e Valori. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Informatica per la Storia dell Arte

Esercitazione 4. Comandi iterativi for, while, do-while

La codifica. dell informazione

Introduzione alla programmazione in C

FILE BINARI FILE BINARI

Prof. Maristella Agosti, Ing. Marco Dussin

INFORMATICA GENERALE E BASI DI DATI PER ARCHIVI AUDIOVISIVI (PRIMO MODULO) Claudio Piciarelli A.A. 2013/2014

Linguaggio C - sezione dichiarativa: costanti e variabili

Come è memorizzato un documento su disco. Dati, formati, metadati. Cosa è un formato. Esempi di formato/1

Introduzione a. Funzioni di Ingresso e Uscita. Compilazione

Codifica dei numeri. Rappresentazione dell informazione

Transcript:

CODIFICA DEL TESTO Simboli da rappresentare: lettere a,b,c,.z,a,b,c,.z cifre 0,1,2,3, 9 simboli di punteggiatura ;:,. Rappresentati mediante sequenze di bit Una codifica dei simboli è perciò (almeno) una regola che stabilisce: quanti e quali simboli vogliamo rappresentare, quanti bit voglio usare per rappresentare ciascuno di quei simboli, una mappa tra valore numerico dei bit e simbolo rappresentato da quel valore valore. Inizialmente solo lingua inglese, pochi simboli, no accenti, no simboli strani. Solo 128 simboli, bastano sequenze di 7 bit (2^7=128) CODIFICA ASCII (7bit su 8) Si usa un byte (8bit) tenendo il bit più significativo a zero. 128 simboli, bastano per scrivere in llinguaggio C. caratteri stampabili (valore >32) lettere (maiuscole e minuscole), cifre, punteggiatura, apici vari, simboli matematici, parentesi varie, 0??????? caratteri di controllo (detti non stampabili) (valore <=32) escape, space, tab, return (invio), del (canc),

CODIFICA ASCII (7 bit su 8) Codice ASCII 48 49 50 51 52 53 54 55 56 57 Carattere '0 '1 '2 '3 '4 '5 '6 '7 '8 '9 codice ASCII 65 66 67 68 69 70 71 ecc.. carattere 'A 'B 'C 'D 'E 'F 'g ecc.. Codice ASCII 97 98 99 100 101 102 103 ecc.. Carattere 'a 'b c 'd 'e 'f 'g ecc.. Codice ASCII 8 9 10. 13 Carattere \b \t \n. \r #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(void) { int i; /* guardare che succede per i valori 0, 8, 9, 10 e 13 */ for( i=0; i<=127; i++ ) printf("%d \"%c\"\n", i, (unsigned char)i ); return(0); }

Se scrivo uno script con un editor di Windows o di Mac inserisco delle fine linea con dei \r. Se poi faccio eseguire quello script da una bash di un sistema Linux, la bash può considerare il carattere \r come un carattere estraneo, non previsto dalle specifiche, e provocare errore. Usare un editor binario (dhex) per visualizzare anche i caratteri non stampabili!!! CODIFICHE a 8 BIT - esempio Latin-1 (iso-8859-1) Come ASCII ma usa anche l ottavo bit per poter rappresentare in totale 256 simboli. I simboli con l ottavo bit posto a zero sono ancora i caratteri ASCII. I simboli con ottavo bit a 1 sono le aggiunte rispetto alla codifica ASCII IL PROBLEMA DELLA FINE LINEA (EOL) I file di testo usano un carattere speciale (o una sequenza di caratteri) per identificare la fine di una riga, ma ogni sistema operativo definisce una propria fine linea (end-of-line EOL). - Linux: singolo carattere, newline (andata a capo), valore 10 (o 0x0A), indicato con \n - Windows: due caratteri assieme, carriage return (ritorno carrello) e newline, valori 13 e 10 ( 0x0D 0x0A), indicati con \r\n in questo ordine. - Mac: due caratteri assieme, come in Windows, ma in ordine invertito, newline e carriage return, valori 10 e 13 (o 0x0A 0x0D), indicati con \n\r in questo ordine.

2 files con EOL diversi visti con l editor esadecimale dhex Figura sopra generato da Windows, sotto generato da Linux

CODIFICHE WIDE-CHAR esempio: codifica U, detta UCS-2, estesa alla codifica UNICODE UTF-16 Usa valori interi a 16 bit, inseriti in blocchi di due byte. Rappresenta anche i codici di Latin-1 (e ASCII) mettendoli nel byte meno significativo e usando un byte più significativo posto a zero. Char ASCII in UCS-2 0 0 0 0 0 0 0 0???????? 15 14 13 12 11 10 9 8 Problema Endianess: stesso numero viene rappresentato in modo diverso a seconda che venga messo, in memoria, nel byte di indirizzo minore il byte più significativo (big endian) o quellomeno significativo (little endian). L estensione UTF-16 inserisce, ad inizio file, il BOM byte-order-mark una coppia di byte contenente il valore 0xFEFF che viene rappresentato in due modi diversi in big endian (prima 0xFE e poi 0xFF) ed in little endian (prima 0xFF e poi 0xFE) per distinguere l ordine dei codici a 16 bit nel file.. Problema Efficienza: se devo rappresentare solo caratteri ASCII uso il doppio dei byte necessari. Problema Zeri: alcuni linguaggi (C e Assembly) usano i byte a zero come indicatori di fine stringa. I programmi che usano rappresentazioni ASCII e Latin-1 si confondono e vedono la fine della stringa prima di dove è realmente.

CODIFICHE MULTIBYTE esempio: codifica F, poi detta codifica UNICODE UTF-8 Massima compatibilità con codifica ASCII Usa più bytes da leggere uno per uno. Se codifica codici ASCII usa un solo byte con bit più significativo posto a zero e gli altri 7 bit rappresentano il valore numerico ASCII. 0??????? Se codifica codici non ASCII il bit più significativo del primo byte è posto a 1, poi ci sono tanti bit a 1 per quanti sono i byte (oltre al primo) da usare. Seguono quel numero di bytes, ciascuno avente primo bit a 1 e secondo bit a zero e poi 6 bit da usare primo byte secondo byte terzo byte 1 1 1 0???? 1 0?????? 1 0?????? Problema Endianess: non esiste problema di endianess, perché interpreto ciascun byte separatamente dagli altri. Non esiste BOM, ma in Windows inseriscono a inizio file una tripletta di caratteri in quest ordine 0xEF,0xBB,0xBF che confonde programmi che usano ASCII puro.

CODIFICHE PER SCRIVERE CODICE ANSI C Dovendo scrivere codice sorgente in linguaggio ANSI C e bash bisogna utilizzare solo caratteri appartenenti alla codifica ASCII ad 8 bit. Si possono perciò usare le codifiche ASCII c Latin-1 ma anche la codifica F (UTF-8), ma in quest ultimo caso bisogna eliminare il BOM inserito da windows a inizio file. Inoltre, bisogna eliminare i caratteri \n aggiunti a fine riga da editor in Windows e Mac. Eliminare BOM di Windows per UTF-8 sed 's/^\xef\xbb\xbf//' Eliminare i vari \r di troppo sed 's/\n\r/\n/ sed 's/\r\n/\n/' Questo è il comando per eliminare il BOM di UTF-8 ed i vari \r dal file oldfile creando il nuovo newfile cat oldfile sed 's/^\xef\xbb\xbf//' $1 sed 's/\n\r/\n/' sed 's/\r\n/\n/' > newfile