Condividi tramite


Set di caratteri a byte doppio

Un set di caratteri a byte doppio (DBCS), noto anche come "set di caratteri espanso a 8 bit", è un set di caratteri esteso set di caratteri a byte singolo (SBCS), implementato come tabella codici. I DBCS sono stati originariamente sviluppati per estendere la progettazione SBCS per gestire lingue come giapponese e cinese. Alcuni caratteri in un DBCS, incluse le cifre e le lettere usate per la scrittura in inglese, hanno valori di codice a byte singolo. Altri caratteri, ad esempio ideogrammi cinesi o kanji giapponesi, hanno valori di codice a byte doppio. Un DBCS può corrispondere a una tabella codici di Windows o a una tabella codici OEM. Una tabella codici DBCS può includere anche una tabella codici non nativa, ad esempio una tabella codici EBCDIC. Per le definizioni di queste tabelle codici, vedere tabelle codici.

Nota

Le nuove applicazioni Windows devono usare Unicode per evitare incoerenze di tabelle codici diverse e per semplificare la localizzazione. Tuttavia, alcuni protocolli legacy potrebbero richiedere l'uso di tabelle codici DBCS. Ogni tabella codici DBCS supporta caratteri diversi, ma nessuna pagina supporta l'intera ampiezza dei caratteri fornita da Unicode. Ogni tabella codici DBCS supporta un subset diverso, codificato in modo diverso. I dati convertiti da una tabella codici DBCS a un'altra sono soggetti a danneggiamento perché lo stesso valore di dati in tabelle codici diverse può codificare un carattere diverso. I dati convertiti da Unicode a DBCS 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.

 

Per interpretare una stringa DBCS, un'applicazione deve iniziare all'inizio della stringa ed eseguire l'analisi in avanti. Tiene traccia quando incontra un byte di piombo nella stringa e considera il byte successivo come parte finale dello stesso carattere. Se l'applicazione analizza semplicemente la stringa un byte alla volta e rileva un byte che sembra essere il valore di codice che rappresenta una barra rovesciata ("\"), tale byte potrebbe essere semplicemente il byte finale di un carattere a due byte. L'applicazione non può eseguire semplicemente il backup di un byte per verificare se il byte precedente è un byte iniziale, perché tale valore di byte potrebbe essere idoneo per essere usato sia come byte iniziale che come byte finale. L'applicazione ha quindi essenzialmente lo stesso problema con esso come con la possibile barra rovesciata. In altre parole, le ricerche di sottostringa sono molto più complesse con un DBCS rispetto a SBCS o Unicode. Di conseguenza, le applicazioni che supportano un DBCS devono usare funzioni speciali, ad esempio _mbsstr, anziché la funzione strStr.

Le applicazioni usano le tabelle codici di Windows DBCS con le versioni "A" delle funzioni di Windows. Vedere convenzioni di per prototipi di funzioni e tabelle codici . Per identificare una tabella codici DBCS, un'applicazione può usare la funzioneGetCPInfoo GetCPInfoEx. Un'applicazione può usare la funzioneisDBCSLeadByteper determinare se un determinato valore può essere usato come byte iniziale di un carattere a 2 byte. Inoltre, un'applicazione può usare le funzioni di MultiByteToWideChar e WideCharToMultiByte per eseguire il mapping tra stringhe Unicode e DBCS.

set di caratteri

set di caratteri a byte singolo