Unicode

Unicode è uno standard di codifica dei caratteri globale. Il sistema usa Unicode esclusivamente per la manipolazione di caratteri e stringhe. Per una descrizione dettagliata di tutti gli aspetti di Unicode, vedere Lo standard Unicode.

Rispetto ai meccanismi meno recenti per la gestione dei dati dei caratteri e delle stringhe, Unicode semplifica la localizzazione software e migliora l'elaborazione del testo multilingue. Usando Unicode per rappresentare i dati di carattere e stringa nelle applicazioni, è possibile abilitare le funzionalità di scambio di dati universali per il marketing globale, usando un singolo file binario per ogni possibile codice di caratteri. Unicode esegue le operazioni seguenti:

  • Consente qualsiasi combinazione di caratteri, disegnata da qualsiasi combinazione di script e linguaggi, di coesistenza in un singolo documento.
  • Definisce la semantica per ogni carattere.
  • Standardizza il comportamento dello script.
  • Fornisce un algoritmo standard per il testo bidirezionale.
  • Definisce i mapping incrociati ad altri standard.
  • Definisce più codifica del set di caratteri singolo: UTF-7, UTF-8, UTF-16 e UTF-32. La conversione dei dati tra queste codifiche è senza perdita di dati.

Unicode supporta numerosi script usati da lingue in tutto il mondo e anche un numero elevato di simboli tecnici e caratteri speciali usati nella pubblicazione. Gli script supportati includono, ma non sono limitati a, latino, greco, cirillico, ebraico, arabo, Devanagari, Thai, Han, Hangul, Hiragana e Katakana. Le lingue supportate includono, ma non sono limitate a, tedesco, francese, inglese, greco, russo, ebraico, arabo, hindi, thai, cinese, coreano e giapponese. Unicode attualmente può rappresentare la maggior parte dei caratteri nel computer moderno usato in tutto il mondo e continua a essere aggiornato per renderlo ancora più completo.

Le funzioni abilitate per Unicode sono descritte in Convenzioni per i prototipi di funzione. Queste funzioni usano la codifica UTF-16 (carattere wide), ovvero la codifica più comune di Unicode e quella usata per la codifica Unicode nativa nei sistemi operativi Windows. Ogni valore di codice è a 16 bit, a differenza dell'approccio precedente della tabella codici ai dati di caratteri e stringa, che usa valori di codice a 8 bit. L'uso di 16 bit consente la codifica diretta di 65.536 caratteri. Infatti, l'universo dei simboli usati per trascrivere le lingue umane è ancora più grande di quello e i punti di codice UTF-16 nell'intervallo U+D800 tramite U+DFFF vengono usati per formare coppie surrogate, che costituiscono codifica a 32 bit di caratteri supplementari. Per altre discussioni , vedere Surrogati e caratteri supplementari .

Il set di caratteri Unicode include numerosi caratteri di combinazione, ad esempio U+0308 (" ̈"), una combinazione di dieresis o umlaut. Unicode può spesso rappresentare lo stesso glifo in un formato ''composto'' o ''decomposto'': ad esempio, la forma composta di "Ä" è il singolo punto di codice Unicode "Ä" (U+00C4), mentre la sua forma decomposta è "A" + " ̈" (U+0041 U+0308). Unicode non definisce una forma composta per ogni glifo. Ad esempio, il minuscolo vietnamita "o" con circonflesso e tilde ("ỗ") è rappresentato da U+006f U+0302 U+0303 (o + Circumflex + Tilde). Per altre discussioni sulla combinazione di caratteri e problemi correlati, vedere Uso della normalizzazione Unicode per rappresentare stringhe.

Per la compatibilità con ambienti a 8 bit e a 7 bit, Unicode può anche essere codificato rispettivamente come UTF-8 e UTF-7. Anche se le funzioni abilitate per Unicode in Windows usano UTF-16, è anche possibile usare i dati codificati in UTF-8 o UTF-7, supportati in Windows come pagine codici del set di caratteri multibyte.

Le nuove applicazioni Windows devono usare UTF-16 come rappresentazione dei dati interni. Windows offre anche un supporto completo per le pagine codici e l'uso misto nella stessa applicazione è possibile. Anche le nuove applicazioni basate su Unicode a volte devono funzionare con le pagine codici. I motivi di questo problema sono descritti in Code Pages.

Un'applicazione può usare le funzioni MultiByteToWideChar e WideCharToMultiByte per convertire tra stringhe basate su pagine codici e stringhe Unicode. Anche se i nomi fanno riferimento a "MultiByte", queste funzioni funzionano altrettanto bene con set di caratteri a byte singolo (SBCS), set di caratteri a byte doppio (DBCS) e pagine di codice set di caratteri multibyte (MBCS).

In genere, un'applicazione Windows deve usare internamente UTF-16, convertendo solo come parte di un "livello sottile" sull'interfaccia che deve usare un altro formato. Questa tecnica si difende dalla perdita e dal danneggiamento dei dati. Ogni tabella codici supporta caratteri diversi, ma nessuno di essi supporta lo spettro completo di caratteri forniti da Unicode. La maggior parte delle pagine di codice supporta diversi subset, codificati in modo diverso. Le pagine codici per UTF-8 e UTF-7 sono un'eccezione, poiché supportano il set di caratteri Unicode completo e la conversione tra queste codifiche e UTF-16 è senza perdita.

I dati convertiti direttamente dalla codifica utilizzata da una tabella codici alla codifica usata da un altro sono soggetti a danneggiamento, perché lo stesso valore di dati in pagine codici diverse può codificare un carattere diverso. Anche quando l'applicazione esegue la conversione più vicina possibile all'interfaccia, è consigliabile considerare attentamente l'intervallo di dati da gestire.

I dati convertiti da Unicode in una tabella codici sono soggetti a perdita di dati, perché una determinata tabella codici potrebbe non essere in grado di rappresentare ogni carattere usato in tali dati Unicode specifici. Si noti pertanto che WideCharToMultiByte potrebbe perdere alcuni dati se la tabella codici di destinazione non può rappresentare tutti i caratteri nella stringa Unicode.

Quando si modernizzare le applicazioni legacy basate su tabella codici per l'uso di Unicode, è possibile usare funzioni generice e la macro TEXT per mantenere un singolo set di origini da cui compilare due versioni dell'applicazione. Una versione supporta Unicode e l'altra funziona con le pagine codici di Windows. Usando questo meccanismo, è possibile convertire anche applicazioni molto grandi da pagine codici di Windows in Unicode mantenendo origini applicazioni che possono essere compilate, compilate e testate in tutte le fasi della conversione. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

I caratteri Unicode e le stringhe usano tipi di dati distinti da quelli per i caratteri e le stringhe basate sulla tabella codici. Oltre a una serie di macro e convenzioni di denominazione, questa distinzione riduce al minimo la possibilità di combinare accidentalmente i due tipi di dati di carattere. Semplifica il controllo dei tipi del compilatore per assicurarsi che vengano usati solo i valori dei parametri Unicode con le funzioni che prevedono stringhe Unicode.

Character Sets

Ordinamento

Surrogati e caratteri supplementari

Uso della normalizzazione Unicode per rappresentare stringhe