Computer finestre Internet

Quanti bit ci sono nella codifica unicode. Unità di misura del volume dei dati e della capacità di memoria: kilobyte, megabyte, gigabyte…. Standard di codifica dei caratteri Unicode

Codifica delle informazioni

Tutti i numeri (entro certi limiti) nella memoria del computer sono codificati da numeri nel sistema numerico binario. Ci sono regole di traduzione semplici e chiare per questo. Tuttavia, oggi il computer viene utilizzato molto più ampiamente che nel ruolo di esecutore di calcoli ad alta intensità di lavoro. Ad esempio, la memoria del computer memorizza informazioni di testo e multimediali. Si pone quindi la prima domanda:

Ogni carattere è codificato da 1 a 4 byte. I caratteri sostitutivi utilizzano 4 byte e richiedono quindi spazio di archiviazione aggiuntivo. Ogni carattere è codificato con almeno 4 byte. In alternativa, puoi utilizzare lo strumento di conversione per convertire automaticamente. Come detto, questo è uno standard che si adatta bene agli americani. Va da 0 a 127 e i primi 32 e l'ultimo sono considerati di controllo, il resto sono "caratteri stampati", cioè riconosciuti dalle persone. Può essere rappresentato solo da 7 bit, anche se di solito viene utilizzato un byte.

Come vengono archiviati i caratteri (lettere) nella memoria del computer?

Ogni lettera appartiene a un certo alfabeto in cui i caratteri si susseguono e, quindi, possono essere numerati con numeri interi consecutivi. Ogni lettera può essere associata a un numero intero positivo e chiamarlo codice carattere... È questo codice che verrà archiviato nella memoria del computer e, quando visualizzato sullo schermo o su carta, verrà "convertito" nel suo carattere corrispondente. Per distinguere la rappresentazione dei numeri dalla rappresentazione dei caratteri nella memoria del computer, devi anche memorizzare informazioni su quali dati sono codificati in una particolare area di memoria.

A seconda del contesto e anche del tempo, questo significa qualcos'altro. Quindi dipende di cosa parli. Significa poco da solo. Ci sono alcune codifiche che usano questo acronimo. Sono molto complessi e quasi nessuno sa usare correttamente la loro pienezza, me compreso.

Ma non con nessun altro sistema di codifica dei caratteri. Questa è la codifica più completa e complessa che esista. Alcuni sono innamorati di lei e altri la odiano, anche se riconoscono la sua utilità. È difficile da capire per una persona, ma per un computer è difficile da affrontare.

La corrispondenza delle lettere di un certo alfabeto con numeri-codici forma il cosiddetto tabella di codifica... In altre parole, ogni carattere di uno specifico alfabeto ha il proprio codice numerico secondo una specifica tabella di codifica.

Tuttavia, ci sono molti alfabeti nel mondo (inglese, russo, cinese, ecc.). Quindi la prossima domanda è:

C'è un confronto tra i due. È uno standard per la presentazione di testi creati da un consorzio. Tra le norme da lui stabilite vi sono alcune codifiche. Ma in realtà si riferisce a molto di più. Un articolo che tutti dovrebbero leggere, anche se non sono d'accordo con tutto ciò che hanno.

I set di caratteri supportati sono suddivisi in piani. I due computer utilizzano sistemi operativi diversi; lo stesso accade con set di caratteri, struttura e formato del file che di solito sono diversi. Comunicazione su connessione di controllo.

Come codificare tutti gli alfabeti utilizzati su un computer?

Per rispondere a questa domanda, seguiremo il percorso storico.

Negli anni '60 del XX secolo in Istituto nazionale americano per gli standard (ANSI)è stata sviluppata una tabella di codifica dei caratteri, che è stata successivamente utilizzata in tutti i sistemi operativi. Questa tabella si chiama ASCII (codice standard americano per lo scambio di informazioni)... Poco dopo è apparso versione ASCII estesa.

La comunicazione avviene attraverso una sequenza di comandi e risposte. Questo semplice metodo è adatto per una connessione di controllo perché possiamo inviare un comando alla volta. Ogni comando o risposta occupa una riga, quindi non dobbiamo preoccuparci del formato o della struttura del file. Ogni riga termina con due caratteri.

Collegamento dati. Lo scopo e l'implementazione della connessione dati sono diversi da quelli specificati nella connessione di controllo. Fatto di base: vogliamo trasferire file su una connessione dati. Il cliente deve determinare il tipo di file da trasferire, la struttura dei dati e la modalità di trasferimento.

Secondo la tabella di codifica ASCII, viene assegnato 1 byte (8 bit) per rappresentare un carattere. Un insieme di 8 celle può assumere 2 8 = 256 valori diversi. I primi 128 valori (da 0 a 127) sono costanti e formano la cosiddetta parte principale della tabella, che comprende cifre decimali, lettere dell'alfabeto latino (maiuscole e minuscole), segni di punteggiatura (punto, virgola, parentesi , ecc.), nonché uno spazio e vari caratteri di servizio (tabulazioni, avanzamento riga, ecc.). Valori da 128 a 255 modulo parte aggiuntiva tabelle dove è consuetudine codificare simboli di alfabeti nazionali.

Inoltre, il trasferimento deve essere preparato dalla connessione di controllo prima che il file possa essere trasferito tramite il collegamento dati. Il problema dell'eterogeneità viene risolto definendo tre attributi del collegamento: tipo di file, struttura dei dati e modalità di trasferimento.

Il file viene inviato come un flusso continuo di bit senza alcuna interpretazione o codifica. Questo formato viene utilizzato principalmente per trasferire file binari come programmi compilati o immagini codificate in 0 e 1 sec. Il file non contiene specifiche verticali per la stampa. Ciò significa che il file non può essere stampato senza un'ulteriore elaborazione perché non ci sono caratteri comprensibili che devono essere interpretati dal movimento verticale del motore di stampa. Questo formato viene utilizzato dai file che verranno archiviati ed elaborati in futuro.

Poiché esiste un'enorme varietà di alfabeti nazionali, esistono tabelle ASCII estese in molte varianti. Anche per la lingua russa esistono diverse tabelle di codifica (Windows-1251 e Koi8-r sono comuni). Tutto ciò crea ulteriori difficoltà. Ad esempio, inviamo una lettera scritta in una codifica e il destinatario cerca di leggerla in un'altra. Di conseguenza, vede krakozyabry. Pertanto, il lettore deve applicare una tabella di codifica diversa per il testo.

Il file può essere stampato dopo la trasmissione. Pagine: Il file è suddiviso in pagine, ognuna delle quali è correttamente numerata e identificata da un'intestazione. È possibile salvare o accedere alle pagine, in modo casuale o sequenziale. Se i dati sono solo una stringa di byte, non è richiesta l'identificazione di fine riga. In questo caso l'indicazione di fine linea è la chiusura della connessione dati da parte del trasmettitore. Il primo byte è chiamato blocco descrittore; gli altri due byte definiscono la dimensione del blocco in byte. Compressione: se il file è troppo grande, i dati potrebbero essere compressi prima di essere inviati. Un metodo di compressione comunemente usato prende un'unità di dati che appare in sequenza e la sostituisce con una singola occorrenza, seguita da un numero di ripetizioni. V file di testo molti spazi vuoti. In un file binario, i caratteri null sono generalmente compressi.

  • File: il file non ha struttura.
  • Viene trasmesso in un flusso continuo di byte.
  • Questo tipo può essere utilizzato solo con file di testo.
  • Catene: questa è la modalità predefinita.
  • In questo caso, ogni blocco è preceduto da un'intestazione di 3 byte.
Sfortunatamente, la maggior parte dei professionisti dello sviluppo Software soprattutto la classe web non presta molta attenzione al set di caratteri che utilizza.

C'è anche un altro problema. Gli alfabeti di alcune lingue hanno troppi caratteri e non rientrano nelle posizioni assegnate da 128 a 255 codifica a byte singolo.

Il terzo problema è cosa fare se il testo utilizza più lingue (ad esempio russo, inglese e francese)? Non puoi usare due tabelle contemporaneamente...

Per risolvere questi problemi, la codifica Unicode è stata sviluppata in una volta sola.

Molti non hanno idea delle differenze tra questi set e si attengono a ciò che è vicino. Il dettaglio sulla codifica è che sono mappe per due cose diverse. La prima è una mappa di valori numerici che rappresenta un carattere specifico.

Altri aerei sono componenti aggiuntivi con personaggi che completano le funzioni dell'aereo principale e altri "speciali" come le "emoticon". In questi modelli, ogni carattere del piano è codificato in solo 1 byte, e quindi abbiamo solo 256 caratteri "possibili". Dobbiamo, ovviamente, rimuovere quelli non stampabili diminuendo l'intervallo.

Standard di codifica dei caratteri Unicode

Per risolvere i problemi di cui sopra nei primi anni '90, è stato sviluppato uno standard di codifica dei caratteri, chiamato Unicode. Questo standard ti consente di utilizzare quasi tutte le lingue e i simboli nel testo.

Unicode fornisce 31 bit per la codifica dei caratteri (4 byte meno un bit). Il numero di combinazioni possibili dà un numero esorbitante: 2 31 = 2 147 483 684 (cioè più di due miliardi). Pertanto, Unicode descrive gli alfabeti di tutte le lingue conosciute, anche i "morti" e inventati, include molti matematici e altri Simboli speciali... Tuttavia, la capacità di informazioni di Unicode a 31 bit è ancora troppo grande. Pertanto, viene utilizzata più spesso la versione abbreviata a 16 bit (2 16 = 65 536 valori), in cui sono codificati tutti gli alfabeti moderni.

E se hai bisogno di fare confronti tra i caratteri, non c'è perdita di prestazioni, poiché il confronto di due valori a 8 bit, 16 bit o 32 bit impiega lo stesso tempo su processori moderni... Il significato associato all'acronimo è ovviamente la dimensione di ciascuna unità di sequenza che costituisce la codifica dei caratteri. Quando il codice ha più bit, viene utilizzata la seguente codifica.

Pertanto, qualsiasi carattere può essere espresso in dimensioni da 1 a 4 byte. Si tratta di un personaggio "speciale" unico? Ciò significa che alcune delle immagini dei personaggi sono molto simili e talvolta ridondanti. Per fare un altro esempio, qualche anno fa c'era una battuta sul cambiamento del '; ' Su '; ' v codici sorgente... Durante la compilazione del codice, il programmatore è impazzito per cercare di capire il problema.

In Unicode, i primi 128 codici sono gli stessi della tabella ASCII.

A partire dalla fine degli anni '60, i computer furono sempre più utilizzati per elaborare informazioni di testo e attualmente la maggior parte computer personale nel mondo (e la maggior parte delle volte) è impegnato nell'elaborazione di informazioni testuali.

ASCII - codifica del testo di base per l'alfabeto latino

Tradizionalmente, per codificare un carattere, viene utilizzata una quantità di informazioni pari a 1 byte, ovvero I = 1 byte = 8 bit.

Per codificare un carattere, è necessario 1 byte di informazioni. Se consideriamo i simboli come possibili eventi, allora possiamo calcolare quanti personaggi diversi può essere codificato: N = 2I = 28 = 256.

Questo numero di caratteri è abbastanza per rappresentare le informazioni testuali, comprese le lettere maiuscole e minuscole degli alfabeti russi e latini, numeri, segni, simboli grafici, ecc. La codifica significa che a ciascun carattere viene assegnato un codice decimale univoco da 0 a 255 o corrispondente codice binario da 00000000 a 11111111.

Pertanto, una persona distingue i simboli per il loro stile e un computer per i loro codici. Quando le informazioni di testo vengono immesse in un computer, è codifica binaria, l'immagine del simbolo viene convertita nel relativo codice binario.

L'utente preme un tasto con un simbolo sulla tastiera e una certa sequenza di otto impulsi elettrici (codice binario del simbolo) viene inviata al computer. Il codice carattere è memorizzato in memoria ad accesso casuale computer dove occupa un byte. Nel processo di visualizzazione di un carattere sullo schermo del computer, viene eseguito il processo inverso: la decodifica, ovvero la conversione del codice del carattere nella sua immagine. Come standard internazionale è stata adottata la tabella dei codici ASCII (American Standard Code for Information Interchange). . I primi 33 codici (da 0 a 32) non corrispondono a caratteri, ma a operazioni (avanzamento riga, inserimento spazio, ecc.). I codici da 33 a 127 sono internazionali e corrispondono a simboli dell'alfabeto latino, numeri, segni aritmetici e segni di punteggiatura. I codici da 128 a 255 sono nazionali, cioè caratteri diversi corrispondono allo stesso codice nelle codifiche nazionali.

Sfortunatamente, al momento ce ne sono cinque diversi tabelle di codici per le lettere russe (KOI8, CP1251, CP866, Mac, ISO), quindi i testi creati in una codifica non verranno visualizzati correttamente in un'altra.

Attualmente, un nuovo internazionale Standard Unicode, che alloca per ogni carattere non un byte, ma due, quindi può essere usato per codificare non 256 caratteri, ma N = 216 = 65536 diversi

Unicode: l'emergere della codifica universale del testo (UTF 32, UTF 16 e UTF 8)

Queste migliaia di caratteri del gruppo linguistico del sud-est asiatico non possono essere descritti in un byte di informazioni, che è stato allocato per la codifica dei caratteri nelle codifiche ASCII estese. Di conseguenza, è stato creato un consorzio chiamato Unicode(Unicode - Unicode Consortium) con la collaborazione di molti leader del settore IT (coloro che producono software, codificano hardware, creano font) interessati all'emergere di una codifica universale del testo.

La prima codifica di testo pubblicata sotto gli auspici del consorzio Unicode è stata la codifica UTF 32... Il numero nel nome della codifica UTF 32 indica il numero di bit utilizzati per codificare un carattere. 32 bit sono 4 byte di informazioni che saranno necessarie per codificare un singolo carattere nella nuova codifica universale UTF 32.

Di conseguenza, lo stesso file con testo codificato in codifica ASCII estesa e codifica UTF 32, in quest'ultimo caso, avrà dimensioni (peso) quattro volte superiori. Questo è un male, ma ora abbiamo l'opportunità di codificare con UTF 32 il numero di caratteri pari a due alla potenza di trenta secondi (miliardi di caratteri che copriranno qualsiasi valore veramente necessario con un margine colossale).

Ma molti paesi con lingue del gruppo europeo non avevano affatto bisogno di utilizzare un numero così elevato di caratteri nella codifica, ma quando si utilizzava UTF 32 non hanno mai avuto un aumento di peso di quattro volte documenti di testo e, di conseguenza, un aumento del volume del traffico Internet e della quantità di dati archiviati. Questo è molto e nessuno potrebbe permettersi un tale spreco.

Come risultato dello sviluppo di un universale La codifica Unicode è apparsa UTF 16, che si è rivelato un tale successo che è stato accettato per impostazione predefinita come spazio di base per tutti i simboli che utilizziamo. UTF 16 utilizza due byte per codificare un carattere. Ad esempio, in sistema operativo Windows, puoi seguire il percorso Start - Programmi - Accessori - Strumenti di sistema - Mappa simboli.

Di conseguenza, si aprirà una tabella con le forme vettoriali di tutti i caratteri installati nel sistema. Se selezioni il set di caratteri Unicode nelle Opzioni avanzate, sarai in grado di vedere separatamente per ogni font l'intero assortimento di caratteri inclusi in esso. A proposito, facendo clic su uno di questi caratteri, puoi vedere il suo codice a due byte nella codifica UTF 16, composto da quattro cifre esadecimali:

Quanti caratteri possono essere codificati in UTF 16 con 16 bit? 65.536 caratteri (due alla potenza di sedici) sono stati presi come spazio di base in Unicode. Inoltre, ci sono modi per codificare con UTF 16 circa due milioni di caratteri, ma erano limitati allo spazio esteso di un milione di caratteri di testo.

Ma anche una versione di successo della codifica Unicode chiamata UTF 16 non ha portato molte soddisfazioni a coloro che hanno scritto, ad esempio, programmi solo in lingua inglese, perché dopo il passaggio dalla versione estesa della codifica ASCII a UTF 16, il peso dei documenti è raddoppiato (un byte per un carattere in ASCII e due byte per lo stesso carattere in codifica UTF 16). È stato proprio per la soddisfazione di tutti e di tutto nel consorzio Unicode che si è deciso di inventare codifica del testo a lunghezza variabile.

Questa codifica in Unicode è stata chiamata UTF 8... Nonostante gli otto nel nome, UTF 8 è una codifica a lunghezza variabile a tutti gli effetti, ad es. ogni carattere del testo può essere codificato in una sequenza da uno a sei byte. In pratica, in UTF 8, viene utilizzato solo l'intervallo da uno a quattro byte, perché oltre i quattro byte di codice, non è nemmeno teoricamente possibile immaginare.

In UTF 8, tutti i caratteri latini sono codificati in un byte, proprio come nella vecchia codifica ASCII. Ciò che è degno di nota, nel caso della codifica solo dell'alfabeto latino, anche quei programmi che non comprendono Unicode leggeranno comunque ciò che è codificato in UTF 8. Cioè, la parte di base della codifica ASCII è stata spostata in UTF 8.

Caratteri cirillici in UTF 8 sono codificati in due byte e, ad esempio, quelli georgiani in tre byte. Il Consorzio Unicode, dopo aver creato le codifiche UTF 16 e UTF 8, ha risolto il problema principale: ora abbiamo un unico spazio di codice nei nostri caratteri. L'unica cosa rimasta ai produttori di font è riempire questo spazio di codice con forme vettoriali di simboli di testo in base ai loro punti di forza e capacità.