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 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 databaseCS, tra cui le cifre e le lettere usate per scrivere l'inglese, dispongono di valori di codice a byte singolo. Altri caratteri, ad esempio ideografi cinesi o kanji giapponesi, hanno valori di codice a byte doppio. Un databaseCS può corrispondere a una tabella codici 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 pagine codici, vedere Code Pages.

Nota

Le nuove applicazioni Windows devono usare Unicode per evitare le incoerenze di pagine codici diverse e per semplificare la localizzazione. Tuttavia, alcuni protocolli legacy potrebbero richiedere l'uso delle pagine codici DBCS. Ogni tabella codici DBCS supporta caratteri diversi, ma nessuna pagina supporta l'intera gamma di caratteri forniti da Unicode. Ogni tabella codici DBCS supporta un subset diverso, codificato in modo diverso. I dati convertiti da una tabella codici DBCS a un altro sono soggetti a danneggiamento perché lo stesso valore di dati in pagine 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. Tiene traccia quando incontra un byte di lead 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 del codice che rappresenta una barra rovesciata ("\"), che il byte potrebbe essere semplicemente il byte finale di un carattere a due byte. L'applicazione non può solo eseguire il backup di un byte per verificare se il byte precedente è un byte di lead, in quanto tale valore di byte potrebbe essere idoneo per essere usato come byte lead e un byte finale. Pertanto, l'applicazione ha essenzialmente lo stesso problema con esso come con la possibile barra rovesciata. In altre parole, le ricerche sottostringa sono molto più complesse con un DATABASECS rispetto a SBCS o Unicode. Di conseguenza, le applicazioni che supportano un databaseCS devono usare funzioni speciali, ad esempio _mbsstr, anziché la funzione StrStr .

Le applicazioni usano DBCS Windows le pagine codici con le versioni "A" delle funzioni di Windows. Vedere Convenzioni per prototipi di funzioni e pagine 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 lead byte 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