670 Shares 9501 views

UTF-8 – codifica dei caratteri

Unicode supporta praticamente tutti i set di caratteri esistenti. La migliore forma di codifica di caratteri Unicode è UTF-8 codifica. Esso supporta la compatibilità con ASCII, resistenza alla distorsione dei dati, l'efficienza e la facilità di lavorazione. Ma andiamo con ordine.

modulo di codifica

Computer funzionano non solo come numeri oggetti astratti matematici, nonché le combinazioni di unità di memorizzazione e gestione dei dati di dimensione fissa – byte e parole di 32 bit. standard di codifica deve tenerne conto nel determinare come presentare il numero di caratteri.

Nei sistemi informatici, gli interi memorizzati nelle celle di memoria di 8 bit (1 byte), 16 o 32 bit. Ogni modulo definisce una codifica Unicode, quale sequenza di celle di memoria è un numero intero corrispondente ad un particolare simbolo. Nello standard esistono tre diverse forme di codifica caratteri Unicode 8, 16 e 32 bit blocchi. Di conseguenza, essi sono noti come UTF-8, UTF-16 e UTF-32. Nome UTF sta per Unicode Transformation Format. Ciascuna delle tre forme di mezzi di codificazione è uguale rappresentazione di carattere Unicode presenta vantaggi in varie applicazioni.

La crittografia dei dati può essere utilizzato per rappresentare tutti i caratteri standard Unicode. Così, essi sono completamente compatibile con soluzioni per una varietà di ragioni, utilizzando diverse forme di codifica. Ogni codice può essere convertito in modo inequivocabile qualsiasi degli altri due, senza perdita di dati.

principio nenalozheniya

Ciascuna delle forme codifica Unicode sviluppata in vista di sovrapposizione non parziale. Ad esempio, Windows-932 forma i personaggi di uno o due byte di codice. La lunghezza della sequenza dipende dal primo byte, per cui i valori di byte iniziale della serie di due byte e singola disgiunti byte. Tuttavia, il valore di un singolo byte e finali sequenza di byte possono coincidere. Ciò significa ad esempio che la ricerca carattere D (codice 44) può trovare erroneamente entrare nella seconda parte della sequenza di due byte carattere "D" (codice 84 44). Per scoprire quale sequenza è corretta, il programma dovrebbe tener conto dei byte precedenti.

La situazione è complicata, se la partita iniziali e finali byte. Ciò significa che per eliminare l'ambiguità sarà una ricerca inversa prima di raggiungere l'inizio del testo o la sequenza di codice unico. Questo non solo è inefficiente, ma non è protetto da possibili errori, dal momento che solo un byte sbagliato al testo integrale è diventato illeggibile.

conversione di formato Unicode evita questo problema perché il valore della prima, posteriore, e una singola unità di memorizzazione non sono le stesse informazioni. Ciò garantisce che tutti i Unicode per la ricerca e il confronto, mai dando risultati errati a causa della coincidenza di diverse parti del codice di carattere. Il fatto che queste forme di codifica osservino il principio nenalozheniya, li distingue dalle altre codifiche multi-byte dell'Asia orientale.

Un altro aspetto nonintersection codifiche Unicode è che ogni personaggio ha un bordo ben definito. Questo elimina la necessità di eseguire la scansione di un numero indefinito di simboli precedenti. Questa funzione è talvolta chiamato codifica self-clocking. Distorsione di unità di codice introdurrà una distorsione di un solo carattere, ed i caratteri circostanti sono ancora intatte. Nella conversione di formato 8-bit, se il puntatore punta al byte, iniziando con 10xxxxxx (in codice binario) per trovare è necessaria l'inizio del simbolo da uno a tre transizioni inversa.

coerenza

Consorzio Unicode supporta pienamente tutte le 3 forme di codifiche. È importante non opporsi alla UTF-8 e Unicode, come tutti i formati di conversione – ugualmente valide forme di realizzazione dello standard di codifica dei caratteri Unicode.

Byte-orientamento

Per rappresentare UTF-32 caratteri avrà bisogno di un'unità di codice a 32 bit, che coincide con il codice Unicode. UTF-16 – uno a due unità a 16 bit. Un UTF-8 utilizza fino a 4 byte.

codifica UTF-8 è progettato per essere compatibile con i sistemi basati su ASCII byte-oriented. La maggior parte del software esistente e la pratica delle tecnologie dell'informazione per lungo tempo si basava sulla rappresentazione di caratteri in una sequenza di byte. più protocolli dipende dalla costanza della codifica ASCII e utilizza sia evita i caratteri di controllo speciali. Un modo semplice per adattarsi alle situazioni Unicode può, utilizzando la codifica a 8 bit per rappresentare i caratteri Unicode, qualsiasi carattere ASCII equivalente o di un carattere di controllo. A tal fine, ed è UTF-8 codifica.

lunghezza variabile

UTF-8 – codifica di lunghezza variabile, costituito da unità di memoria a 8 bit, i bit superiori che indicano a quale parte della sequenza di ogni singolo byte appartiene. Una gamma di valori assegnati al primo elemento della sequenza di codice, un altro – per il prossimo. Questo fornisce codifica disgiunzione.

ASCII

codici ASCII codifica UTF-8 è completamente supportato (0x00-0x7F). Ciò significa che i caratteri Unicode U + 0000-U + 007F sono convertiti in singolo byte 0x00-0x7F UTF-8, e così diventano indistinguibili da ASCII. Inoltre, per evitare ambiguità, il valore 0x00-0x7F non più usato in una rappresentazione byte singolo caratteri Unicode. Per codificare i simboli neideograficheskih diverso ASCII, usando una sequenza di due byte. Simboli variano U + 0800-U + FFFF sono rappresentati da tre byte e codici addizionali con più di U + FFFF richiedono quattro byte.

ambito di applicazione

codifica UTF-8 di solito viene data la preferenza nel protocollo HTML, e simili.

XML è diventato il primo standard con pieno supporto per codifica UTF-8. organismi di normalizzazione consigliamo anche esso. problema di supporto nell'indirizzo URL che è diverso dai caratteri ASCII, è stato risolto quando il consorzio W3C e IETF gruppo di ingegneria hanno raggiunto un accordo sulla codifica di tutti gli indirizzi URL esclusivamente in UTF-8.

La compatibilità con ASCII facilita la transizione al nuovo software. Con UTF-8 funziona maggior parte degli editor di testo, tra cui JEdit, Emacs, BBEdit, Eclipse, e "Blocco note" il sistema operativo Windows. Nessun altra forma di codifica Unicode non possa vantare un tale supporto dell'utensile.

codifica vantaggio è che è costituito da una sequenza di byte. Con stringa UTF-8 è facile da lavorare in C e altri linguaggi di programmazione. Questa è l'unica forma di codifica, dell'ordine non richiede etichette byte BOM o una dichiarazione di codifica in XML.

auto-sincronizzazione

In un ambiente che utilizza simboli 8 bit del trattamento rispetto ad altri set di caratteri multi-byte, UTF-8 presenta i seguenti vantaggi:

  • La prima sequenza di codice byte contiene informazioni sulla sua lunghezza. Ciò aumenta l'efficienza della ricerca diretta.
  • Semplificata trovare l'inizio del simbolo come il byte iniziale è limitato ad un intervallo fisso di valori.
  • Nessun valore di intersezione di byte.

Confronta i benefici

codifica UTF-8 è compatto. Ma quando viene utilizzato per la codifica dei caratteri dell'Asia orientale (cinese, giapponese, coreano, la scrittura cinese con segni) utilizzato sequenze di 3 byte. Anche UTF-8 codifica inferiore ad altre forme di codifica velocità di elaborazione. Un binario linee di scelta produce lo stesso risultato del binario di smistamento Unicode.

Lo schema di codifica dei caratteri

Lo schema di codifica dei caratteri comprende forma simboli di codifica e metodo per unità di codice di posizione a singolo byte. Per determinare lo schema di codifica standard Unicode fornisce l'uso di un segno di ordine di byte iniziale (BOM, Byte segno di ordine).

Quando la distinta base in UTF-8 funzione tag è limitato solo con riferimento al ricorso a forme di codifica. Problemi nel determinare la endian UTF-8 hanno, come le sue dimensioni unità di codifica è un byte. Utilizzando la distinta base per questa forma di codifica non è richiesto né raccomandato. BOM può verificare nel testo da convertire da altre codifiche utilizzando BOM o la firma per UTF-8 codifica. È una sequenza di 3 byte EF BB 16 16 16 BF.

Come impostare la codifica UTF-8

Il codice HTML UTF-8 viene installato con il seguente codice:

testa

Meta http-equiv = "Content-Type" content = "text / html; charset = utf-8" ˃

In PHP UTF-8 codifica è impostata utilizzando la funzione header () all'inizio del file dopo aver impostato il valore di errore livello di uscita:

˂? Php

error_reporting (-1);

header ( "Content-Type: text / html; charset = utf-8 ');

Per connettersi a un database MySQL codifica UTF-8 è impostato:

˂? Php

mysql_set_charset ( 'utf8');

La codifica CSS-file è caratteri UTF-8 è specificato come segue:

@charset "utf-8";

Quando si salvano i file di tutti i tipi scelgono codifica UTF-8 senza BOM, altrimenti il sito potrebbe non funzionare. Per fare questo in DreamWeave necessario selezionare la voce di menu "Modifiche – Proprietà della pagina – Titolo / Codifica" per modificare la codifica UTF-8. Seguito da ricaricare la pagina, rimuovere il segno di spunta da "firma Collegare Unicode (BOM)» e applicare le modifiche. Se qualsiasi testo in una pagina o in un database è stato introdotto un altro tipo di codifica, è necessario reinserire o ri-codificare. Quando si lavora con le espressioni regolari, assicurarsi di utilizzare il modificatore u.

È inoltre possibile salvare il file nella codifica UTF-8 nel "Blocco note" di Windows. Dopo aver selezionato la voce di menu "File – Salva con nome …" per installare il modulo necessario di codifica e salvare il file in formato UTF-8.

In un editor di testo Notepad ++, se impostato diversa da UTF-8, tramite la voce di menu "Convert to UTF-8 senza BOM» cambiare il carattere e salvare in UTF-8.

non c'è alternativa

Nel contesto della globalizzazione, in cui vengono cancellati i confini politici e linguistici, i set di caratteri che hanno caratteristiche locali, sono di scarsa utilità. Unicode è un unico set di caratteri che supporta tutte le localizzazioni. Un UTF-8 – un esempio della corretta applicazione di Unicode, che è:

  • Supporta una vasta gamma di strumenti, tra cui la compatibilità con la codifica ASCII;
  • È resistente alla deformazione dati;
  • semplice ed efficace nel trattamento;
  • è indipendente dalla piattaforma.

Con l'avvento del dibattito UTF-8 su quale forma di codifica o set di caratteri è meglio, diventa priva di significato.