Computer finestre Internet

Lo standard di codifica unicode alloca per ogni carattere. Cos'è Unicode?

Unicode è un sistema di codifica che assegna un codice univoco a qualsiasi carattere, indipendentemente dalla piattaforma, dal programma, dalla lingua.

In effetti, anche nel titolo stesso di questa nota c'è qualche imprecisione, o meglio, una contraddizione. Il fatto è che non c'è ancora unanimità su come scrivere correttamente la parola inglese Unicode in lettere russe - Unicode o Unicode. Utilizzeremo ora la prima opzione di ortografia.

A volte, quando apri documenti o visualizzi pagine invece di lettere polacche, ci sono diversi "cespugli". Questi errori possono essere causati da una codifica dei caratteri errata. Il testo che vedi sullo schermo viene memorizzato dal computer sotto forma di zeri e uno, che sono compressi in otto parti. Uno zero o un bit; Un gruppo di otto è un byte. I dispositivi elettronici memorizzano le informazioni in byte, incluso il testo.

Ok, ma come possono tutti questi pezzi di computer fare la storia? Dieci assomiglierà a questo: in questo modo, per scrivere numeri, chiamiamo binario, abbiamo imparato a usare i numeri decimali. Questo viene fatto in modo che a ogni carattere sia assegnato un numero. La frase "Alla ha un gatto" è un insieme di numeri.

Unicode non è solo una codifica multibyte per rappresentare molti caratteri, come molti pensano, sebbene tale definizione possa essere considerata corretta in una certa misura. Ufficialmente, la definizione è questa: Unicode è un sistema di codifica che assegna un codice univoco a qualsiasi carattere, indipendentemente dalla piattaforma, indipendentemente dal programma, indipendentemente dalla lingua.

Nota che le lettere maiuscole e minuscole sono un carattere separato per il computer e anche gli spazi bianchi sono un segno, sebbene non siano visibili. Inoltre, le singole cifre vengono trattate allo stesso modo. Ad esempio, al carattere 1 non viene assegnato solo il numero 1.

No, ma dove fa il computer a sapere quale carattere è assegnato? questo numero? La risposta è la codifica dei caratteri. In generale, è una tabella con tutti i simboli e i numeri ad essi assegnati. Nel tempo, questo numero non è più sufficiente: i computer hanno acquisito nuove funzionalità e sono diventati più popolari in altri paesi con lettere speciali.

Lo standard unicode è diviso in due parti. Il primo è un insieme di numeri corrispondenti a ciascun carattere in ciascun alfabeto supportato. Si chiama Universal Character Set, o semplicemente UCS. I numeri utilizzati nello spazio del codice UCS sono tutti interi e non negativi. Questi numeri - posizioni di codice - sono designati come U + 0000, U + 0001, U + 0002, ecc. Con tutto ciò, lo spazio del codice non è omogeneo, ma è diviso in diverse aree semantiche. I codici da U + 0000 a U + 007F sono caratteri ASCII, seguiti da caratteri di diversi alfabeti nazionali, punteggiatura e caratteri tecnici come un ritorno a capo su una nuova riga. La seconda parte dello standard è, infatti, le codifiche che forniscono una rappresentazione bit per bit di ogni codice nel testo.

Sebbene entrambi abbiano più di duecentocinquanta caratteri, questo numero non è ancora sufficiente per funzionare in tutte le lingue, quindi ogni famiglia linguistica ha la propria versione di queste codifiche. Questa è chiamata una pagina di codice. Avevano tutti la stessa origine, quindi includevano segni di punteggiatura, lettere inglesi maiuscole e minuscole e numeri. Tuttavia, il resto dei caratteri variava da versione a codice.

Ma anche l'introduzione delle code page non ha risolto tutti i problemi. Il primo è l'interoperabilità degli standard. Sebbene i primi 127 caratteri siano gli stessi per tutti gli standard, il resto dei caratteri è ordinato in base alla propria rappresentazione. La parola angolo scritta in questo primo angolo verrà aperta dopo l'apertura del sistema per il secondo standard.

Tutti i caratteri Unicode sono divisi in due tipi: estesi e senza larghezza (modificanti). I caratteri estesi sono le solite lettere con cui viene digitata questa nota. Quelli modificanti sono i segni sopra la lettera come accenti, punti, "maiuscole", ecc., ecc. La maggior parte delle lettere con segni simili per tutti gli alfabeti viene presentata come una sequenza di simboli estesi e modificanti. È vero, il cirillico "e" e "y" sono presentati come caratteri estesi separati.

Un altro problema è che 256 caratteri non sono ancora sufficienti per scrivere documenti in modo fluido. Nella maggior parte dei casi questo è sufficiente, ma sorgono problemi quando è necessario fare riferimento a Mr. Möller, Pütz o Strassmann per la sua tesi di master. Inserisci cirillico o invio lettere greche in una complessa formula matematica.

È necessario un nuovo metodo di codifica che includa tutti i possibili caratteri utilizzati in tutte le lingue del mondo. Questo rende meno comuni gli errori. Tuttavia, è sorto un altro problema: così tanti possibili caratteri non hanno permesso di scrivere 1 byte per loro. Un byte è composto da otto o zeri, il che consente di organizzarli in modi diversi. Così tanti personaggi hanno pagine di codice. Per aumentare il numero di caratteri supportati dal sistema di codifica, è necessario aumentare il numero di byte necessari per inserire una lettera.

L'implementazione pratica più comune di Unicode è UTF-8. Questo standard fornisce una buona compatibilità con i vecchi testi ASCII grazie al fatto che i caratteri dell'alfabeto inglese e altri caratteri comuni (cioè caratteri con codici ASCII da 0 a 127) sono scritti in un byte. Il resto dei caratteri è scritto in un gran numero di byte, da due a sei.

Recentemente, il carattere della Lira Turca è stato aggiunto al carattere Unicode. Il numero ad essa assegnato è 110 Se ogni lettera dovesse essere occupata da 3 byte, anche quelle dall'inizio con uno, aumenterebbe lo spazio necessario per salvare il file su disco.

Gli sviluppatori hanno avuto l'idea che i personaggi non dovrebbero avere un numero costante di byte. E per questo, per lavorare su un computer, corrispondono alla codifica. Modifica la codifica dei caratteri in ciascuno di questi tre e verifica se vengono visualizzate tutte le lettere. Se hai bisogno di codificare la tua pagina in questo modo, scarica un blocco note gratuito e più potente.

Unicode e gli standard correlati sono in fase di sviluppo da parte del Consorzio Unicode. Come è scritto sul sito web ufficiale di questa organizzazione, www.unicode.org, "L'Unicode Consortium è un'organizzazione senza scopo di lucro fondata per sviluppare e sviluppare lo standard Unicode che definisce la rappresentazione delle informazioni testuali nei moderni prodotti e standard software, e per favorirne la diffusione e l'utilizzo capillare. I membri Il Consorzio è un gran numero di società e organizzazioni che operano nei settori dell'elaborazione delle informazioni e dell'industria informatica. Il sostegno finanziario del Consorzio viene effettuato esclusivamente attraverso le quote associative dei suoi membri. il Consorzio Unicode è aperto a qualsiasi organizzazione o individuo che supporti lo standard Unicode e voglia contribuire alla sua diffusione e implementazione”. Unisciti a noi! :)

La descrizione in questo articolo si basa sulla Beta 8, disponibile solo per una ristretta cerchia di beta tester. Poiché il beta testing volge al termine, è molto probabile che la maggior parte delle caratteristiche e delle funzionalità descritte appariranno effettivamente nella versione finale. Tratteremo i cambiamenti e le novità più significativi riguardanti l'attuale versione 51 in ciascuno dei blocchi tematici.

Lavorare con i file e l'aspetto dell'applicazione

La nuova sesta versione non cambia nulla in questa organizzazione dello spazio di lavoro, ma amplia notevolmente le capacità di queste due finestre. Se chiedi come, le risposte vengono "segnalate". Ogni finestra ora può passare rapidamente da una cartella all'altra che definiamo. Puoi creare tutti i segnalibri che desideri e puoi passare rapidamente da una cartella all'altra in un'unica finestra. Puoi continuare a lavorare con i segnalibri. Ognuna delle schede si comporta come un pannello file separato, quindi possiamo lavorarci alla vecchia maniera.

Lo standard Unicode, o ISO/IEC 10646, è il risultato della collaborazione tra l'International Organization for Standardization (ISO) e i principali produttori di computer e Software... Le ragioni esposte nella pagina precedente li hanno portati a una formulazione fondamentalmente nuova della domanda: perché dedicare sforzi allo sviluppo di tabelle di codici separate, se è possibile creare un'unica tabella per tutte le lingue nazionali? Tale compito sembra eccessivamente ambizioso, ma solo a prima vista. Il fatto è che su 6.700 lingue viventi, una cinquantina sono le lingue ufficiali degli stati, e usano circa 25 scritture diverse: i numeri per la nostra era informatica sono abbastanza prevedibili.

I segnalibri verranno visualizzati solo se nella finestra di almeno Due. Quando si copiano grandi quantità di dati che persistono per lungo tempo, nelle versioni precedenti possono essere utilizzate copie in background. Naturalmente, questa popolare funzionalità è stata mantenuta e ha portato diverse nuove versioni nella nuova versione.

Se lo selezioni, vedrai una finestra di dialogo di copia in background estesa in cui puoi mettere in pausa la copia e impostare il bitrate massimo che verrà copiato. Inoltre, è possibile aggiungere continuamente file a questa finestra. Questa modalità "gestisce" i problemi di alcuni utenti che stanno affrontando intensamente più finestre in fase di esecuzione: possono installare velocità massima trasferire e ordinare i file in sequenza nella coda per ridurre significativamente il carico complessivo del disco.

Una stima preliminare ha mostrato che un intervallo di 16 bit è sufficiente per codificare tutti questi script, ovvero l'intervallo da 0000 a FFFF. Ad ogni script è stato assegnato il proprio blocco in questo intervallo, che è stato gradualmente riempito con i codici dei personaggi di questo script. Oggi, la codifica di tutti gli script ufficiali viventi può essere considerata completa.

Ora la funzione di creare cartelle può anche creare una struttura di directory. Ulteriori miglioramenti quando si lavora con i file. La sincronizzazione delle directory ha due grandi miglioramenti. Nel modulo di ridenominazione principale sono state aggiunte opzioni per il salvataggio delle impostazioni e strumenti per la creazione di un file di sovrascrittura visivo.

Il client è anche in grado di rilevare continuamente le connessioni interrotte e può riconnetterlo automaticamente all'avvio. Altre nuove funzionalità includono il supporto per nuovi tipi di server proxy, la sostituzione automatica dei caratteri vietati nei nomi degli abbonamenti e la configurazione di nuove connessioni nella finestra di dialogo Preferenze.

Una metodologia ben sviluppata per analizzare e descrivere i sistemi di scrittura ha permesso al consorzio Unicode di passare recentemente alla codifica del resto degli script della Terra che sono di qualche interesse: questi sono gli script di lingue morte, geroglifici cinesi che sono usciti dall'uso moderno , alfabeti creati artificialmente, ecc. Per rappresentare tutto questa ricchezza di codifica a 16 bit non è più sufficiente e oggi Unicode utilizza uno spazio di codice a 21 bit (000000 - 10FFFF), che è suddiviso in 16 zone chiamate piani. Finora, i piani Unicode includono i seguenti piani:

Con le opzioni apportate nelle versioni precedenti, la finestra di dialogo di configurazione originale è diventata poco chiara. La nuova finestra di configurazione è suddivisa in categorie più leggibili, con ogni sezione dedicata a pagina separata dialogo. Troverai la maggior parte dei parametri conosciuti da versione precedente e molte nuove opzioni.

È una codifica dei caratteri di classe mondiale. La stragrande maggioranza dei caratteri speciali di tutte le lingue del mondo è già presente. Incantesimi di "espressioni regolari": molte persone hanno paura. Tutto quello che deve fare è guardare la sua presentazione ufficiale. Un carattere a doppio byte è un codice di carattere a doppio byte multilingue. La maggior parte dei simboli utilizzati quando si utilizzano computer in tutto il mondo, inclusi simboli tecnici e Simboli speciali, può essere rappresentato come caratteri Unicode come carattere a doppio byte.

    Piano 0 (codici 000000 - 00FFFF) - BMP, Piano multilingue di base (BMP, Piano multilingue di base), corrisponde alla gamma Unicode originale.

    Piano 1 (codici 010000 - 01FFFF) - DMP, Supplementary Multilingual Plane (SMP), destinato agli script morti.

    Piano 2 (codici 020000 - 02FFFF) - DIP, un piano geroglifico aggiuntivo (SIP, Supplementary Ideographic Plane), destinato ai geroglifici non inclusi nel BMP.

    Poiché ogni carattere a doppio byte è rappresentato in una dimensione fissa a 16 bit, la larghezza del carattere semplifica la programmazione utilizzando i set di caratteri internazionali. In genere, le larghezze dei caratteri occupano più spazio di memoria rispetto ai caratteri multibyte, ma sono più veloci da elaborare.

    Se è una stringa normale, dirà, se è una stringa Unicode, dirà. Innanzitutto, la finestra del terminale è solitamente configurata per visualizzare i caratteri solo da un insieme limitato di lingue. Se emetti un'istruzione di stampa su una stringa unicode, potrebbe non essere visualizzata correttamente nella finestra del terminale. Qui, ogni carattere Unicode deve essere codificato come uno o più "byte" per l'archiviazione in un file.

    Il piano 14 (codici 0E0000 - 0EFFFF) è un truciolato, un piano speciale aggiuntivo (SSP, Supplementary Special-purpose Plane), destinato a caratteri speciali.

    Piano 15 (codici 0F0000 - 0FFFFF) - Piano per uso privato, destinato a simboli di scrittura artificiale.

    Piano 16 (codici 100000 - 10FFFF) - Piano per uso privato, destinato a simboli di scrittura artificiale.

    Finora abbiamo evitato la codifica dei dati di basso livello, ma capire un po' di bit e byte ti aiuterà a capirlo. Questo è l'unico valore, limitato da due possibilità, che convenzionalmente scriviamo come 0, oppure i computer memorizzano i bit come cariche elettriche o polarità magnetiche, o in qualche altro modo che non dobbiamo preoccuparci. Una sequenza di otto bit 0-1 è chiamata byte.

    Ci sono molte possibili codifiche. Un carattere Unicode è mappato a una sequenza di un massimo di quattro byte. Puoi farlo in due modi. Tutto funzionerà correttamente fino a quando non proverai a stampare o scrivere il contenuto su un file. Se stai digitando e la finestra del terminale non è configurata per visualizzare quella lingua, potresti fornire un output strano.

Una suddivisione di BMP in blocchi è fornita in WDH: Unicode Standard. Qui notiamo solo che i primi 128 codici (00000 - 0007F) corrispondono ai codici ASCII e codificano il blocco latino di base. Il layout degli script per la gamma Unicode sarà descritto in dettaglio nel mio articolo "Unicode e gli script del mondo". Poiché in futuro saremo interessati solo ai simboli BMP, utilizzo i loro codici a 16 bit della forma XXXX (i bit più significativi sono uguali a zero e non sono indicati).

Se provi a scrivere sul file, potresti ricevere un messaggio di errore. Ciò ti consente di scrivere in un documento, ad esempio in un ciclo e nell'alfabeto polacco. Questo è di gran lunga lo standard più versatile. Ovviamente usano tutti lo stesso array e hanno le stesse capacità, l'unica differenza è in un modo diverso di scrivere. La più grande portabilità sono i tuoi documenti Unicode. Ogni parser deve supportarlo. Non hai garanzie per uno standard.

Se lo usi, non hai bisogno di alcuna informazione di codifica. Alcune informazioni sui programmi che possono aiutarti a codificare e convertire i caratteri sono disponibili nella sezione "Strumenti". Questo tutorial mostra solo i passaggi che devi seguire per aggiungere un carattere con lettere maiuscole e minuscole e segni diacritici specifici per la lingua rumena. Scrivere senza segni diacritici può portare a espressioni ambigue come "carro armato di 12 anni", "romanzo nato a Roma".

descrizione generale

Unicode si basa sul concetto di carattere. Un simbolo è un concetto astratto che esiste in uno specifico sistema di scrittura e si realizza attraverso le sue immagini (grafemi). Ciò significa che ogni carattere è dato codice univoco e appartiene a un blocco Unicode specifico. Ad esempio, c'è il grafema A negli alfabeti inglese, russo e greco. Tuttavia, in Unicode corrisponde a tre diversi caratteri "Lettera maiuscola latina A" (codice 0041), "Lettera maiuscola cirillica A" (codice 0410) e "Lettera maiuscola greca ALPHA" (codice 0391). Se ora applichiamo a questi caratteri la conversione in lettera minuscola, otterremo rispettivamente "Lettera A minuscola latina" (codice 0061, grafema a), "Lettera A minuscola cirillica" (codice 0430, grafema a) e "Lettera minuscola greca ALPHA" ( codice 03B1, grafema α), ovvero grafemi diversi.

I segni diacritici sono un cappello - per questo - una busta, una virgola e una virgola - la lingua per i rumeni. È progettato per qualsiasi lettera in qualsiasi lingua, su qualsiasi piattaforma hardware o software, in modo che corrisponda al suo numero univoco e univoco. Ora avrà la forma e le dimensioni del glifo.

Sceglieremo un grafico a virgola. Un contorno rosso di un glifo significa che è selezionato. Per altre lettere diacritiche rumene, vengono fatti gli stessi adattamenti. Viene visualizzata la finestra di dialogo Informazioni sui caratteri. Aggiungiamo nel campo Cognome il nome che nome vogliamo per il carattere.

Potrebbe sorgere la domanda: qual è la conversione in una lettera minuscola? Qui arriviamo al punto più interessante e importante dello standard. Il punto è che Unicode non è facile tabella dei codici... Il concetto di simbolo astratto ha permesso ai creatori di Unicode di creare un database di caratteri in cui ogni carattere è descritto dal suo codice univoco (chiave del database), nome completo e insieme di proprietà. Ad esempio, un simbolo con codice 0410 è descritto in questo database come segue:

0410; A MAIUSCOLO CIRILLICO; Lu; 0; L ;;;;; N ;;;; 0430;

Decifriamo questa voce. Significa che il codice 0410 è assegnato al "Cirillico lettera maiuscola"(nome completo del simbolo), che ha le seguenti proprietà:

Categoria generalelettera minuscola (Lu = Lettera, maiuscola)
Classe di combinazione0
Direzione di uscitada sinistra a destra (L)
Decomposizione dei simboliNo
Cifra decimaleNo
NumeroNo
Valore numericoNo
Simbolo dello specchiomancante (N)
Nome completo in Unicode 1.0anche
Un commentoNo
Mappatura maiuscolaNo
Visualizza in lettere minuscole0430
Mappatura alla lettera del titoloNo

Le proprietà elencate sono definite per ogni carattere Unicode. Ciò ha permesso ai suoi sviluppatori di creare algoritmi standard che determinano, in base alle proprietà dei simboli, regole per il loro rendering, ordinamento e conversione in lettere maiuscole/minuscole.

In sintesi, possiamo dire che lo standard Unicode è composto da tre parti correlate:

    banche dati di simboli;

    base di grafemi (glifi), che determinano la rappresentazione visiva di questi simboli;

    un insieme di algoritmi che determinano le regole per lavorare con i simboli.

In conclusione di questa sezione, presentiamo i grafemi del blocco cirillico (codici 0400 - 04FF). Si prega di notare che include non solo le lettere dei moderni alfabeti cirillici (russo, ucraino, bielorusso, bulgaro, serbo, macedone, ecc.), ma anche tutte le lettere dell'alfabeto cirillico originale utilizzato nella scrittura slavo ecclesiastico.

Formati di trasformazione

Come abbiamo visto, ogni carattere Unicode ha un punto di codice univoco a 21 bit. Tuttavia, per l'implementazione pratica, tale codifica dei caratteri è scomoda. Il fatto è che i sistemi operativi e protocolli di rete tradizionalmente trattano i dati come flussi di byte. Questo porta ad almeno due problemi:

    L'ordine dei byte in una parola è diverso per i diversi processori. Processori Intel, DEC e altri memorizzano il suo byte più significativo nel primo byte di una parola macchina, mentre i processori Motorola, Sparc e altri memorizzano il suo byte meno significativo. Sono rispettivamente chiamati little-endian e big-endian (questi termini derivano dalle estremità "appuntite" e "smussate" di Swift, discutendo su quale estremità rompere le uova).

    Molti sistemi e protocolli orientati ai byte consentono solo i byte di un intervallo specifico come dati. Il resto dei byte è considerato sovraccarico; in particolare, è consuetudine utilizzare un byte nullo come carattere di fine riga. Poiché Unicode codifica i caratteri in una riga, la trasmissione diretta dei suoi codici come stringhe di byte può entrare in conflitto con le regole del protocollo di trasferimento dati.

Per superare questi problemi, lo standard include tre formati di trasformazione UTF-8, UTF-16 e UTF-32, che definiscono le regole per la codifica dei caratteri Unicode rispettivamente come stringhe di byte, coppie di parole a 16 bit e parole a 32 bit. La scelta del formato da utilizzare dipende dall'architettura del sistema informatico e dagli standard di archiviazione e trasmissione dei dati. Una breve descrizione dei formati di trasformazione può essere trovata in WDH: Unicode Standard.

Problemi di implementazione

Penso che anche da quanto sopra breve descrizione Standard Unicodeè chiaro che il suo pieno supporto da major sistemi operativi segnerà una rivoluzione nell'elaborazione di testi. Un utente seduto a qualsiasi terminale Web potrà scegliere qualsiasi layout di tastiera, digitare il testo in qualsiasi lingua e trasmetterlo a qualsiasi computer che visualizzi correttamente questo testo. I database saranno in grado di archiviare, ordinare correttamente e visualizzare nei report informazioni di testo di nuovo in qualsiasi lingua. Affinché questo paradiso venga, sono necessarie cinque cose:

    I sistemi operativi devono supportare i formati di trasformazione Unicode a livello di input, archiviazione e visualizzazione delle stringhe di testo.

    Abbiamo bisogno di driver per tastiera intelligenti che ci permettano di inserire caratteri in qualsiasi blocco Unicode e di passarli codici al sistema operativo.

    Gli editor di testo dovrebbero supportare la visualizzazione di tutti i caratteri Unicode ed eseguire su di essi un insieme comune di operazioni sui caratteri.

    Lo stesso deve essere fatto correttamente dal DBMS per i campi di testo e memo.

    Poiché le codifiche nazionali coesisteranno con Unicode per molto tempo, è necessario supportare le trasformazioni di testo tra di esse.

Sfortunatamente, dobbiamo ammettere che in dieci anni (Unicode 1.0 è apparso nel 1991) è stato fatto molto meno in questa direzione di quanto vorremmo. Anche Windows, che contiene il supporto più consistente per Unicode a livello di sistema, è pieno di limitazioni completamente irrazionali dovute solo al suo sviluppo storico. La situazione è ancora peggiore su Unix, poiché il supporto Unicode è stato portato dal kernel ad applicazioni specifiche. Probabilmente, Unicode è oggi maggiormente supportato in due ambienti: browser Web e macchine virtuali Java. Questo non è sorprendente, dal momento che entrambi gli ambienti sono stati originariamente progettati per essere indipendenti dal sistema.

Da notare anche le difficoltà oggettive nel supportare Unicode. Ad esempio, ci concentreremo solo sulla visualizzazione dei grafemi, per i quali è necessario installare i font appropriati nel sistema. Il problema è che un font contenente tutti i grafemi Unicode avrà una dimensione completamente scomoda. Ad esempio, il carattere TrueType Arial Unicode MS, che contiene un'ampia porzione di caratteri Unicode, "pesa" 24 MB. Man mano che Unicode si riempie di nuovi blocchi, la dimensione di tali caratteri si avvicinerà a 100 MB. Una via d'uscita dalla situazione è il caricamento di simboli su richiesta proposto da Microsoft, accettato nel loro browser. Internet Explorer... Tuttavia, mentre gli standard sulle regole per la formazione dei caratteri Unicode sono silenziosi.

Modi per lavorare con Caratteri Unicode e le codifiche nazionali negli ambienti e nei sistemi di programmazione più importanti saranno discussi nei seguenti articoli.

Non esiste una pagina simile

Potrebbe essere stata. Un giorno. Prima. Oppure solo nei piani. Ma ora se n'è andata.