Set di caratteri a byte doppio

Un set di caratteri a byte doppio (DBCS), noto anche come set di caratteri a 8 bit espanso, è un set di caratteri a byte singolo esteso (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 gli ideogrammi cinesi o i 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 le incoerenze di tabelle codici diverse e per facilitare la localizzazione. Tuttavia, alcuni protocolli legacy potrebbero richiedere l'uso delle tabelle codici DBCS. Ogni tabella codici DBCS supporta caratteri diversi, ma nessuna pagina supporta l'intera ampiezza di 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 rileva un byte di piombo nella stringa e considera il byte successivo come parte finale dello stesso carattere. Se l'applicazione analizza semplicemente la stringa di 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 solo il backup di un byte per verificare se il byte precedente è un byte lead, in quanto tale valore di byte potrebbe essere idoneo per essere usato sia come byte lead che come byte finale. Pertanto, l'applicazione ha 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 per prototipi di funzioni e tabelle codici. Per identificare una tabella codici DBCS, un'applicazione può usare la funzione GetCPInfo o GetCPInfoEx . Un'applicazione può usare la funzione IsDBCSLeadByte per determinare se un determinato valore può essere usato come byte iniziale di un carattere a 2 byte. Inoltre, un'applicazione può usare le funzioni MultiByteToWideChar e WideCharToMultiByte per eseguire il mapping tra stringhe Unicode e DBCS.

Character Sets

Set di caratteri a byte singolo