Juegos de caracteres de doble byte

Un juego de caracteres de doble byte (DBCS), también conocido como "juego de caracteres expandido de 8 bits", es un juego de caracteres de un solo byte extendido (SBCS), implementado como página de códigos. Los DBCS se desarrollaron originalmente para ampliar el diseño de SBCS para controlar idiomas como japonés y chino. Algunos caracteres de un DBCS, incluidos los dígitos y letras usados para escribir inglés, tienen valores de código de un solo byte. Otros caracteres, como ideógrafos chinos o kanji japonés, tienen valores de código de doble byte. Un DBCS puede corresponder a una página de códigos de Windows o a una página de códigos OEM. Una página de códigos DBCS también puede incluir una página de códigos no nativa, por ejemplo, una página de códigos EBCDIC. Para ver las definiciones de estas páginas de códigos, vea Páginas de códigos.

Nota

Las nuevas aplicaciones de Windows deben usar Unicode para evitar las incoherencias de páginas de códigos variadas y para facilitar la localización. Sin embargo, algunos protocolos heredados pueden requerir el uso de páginas de códigos DBCS. Cada página de códigos dbCS admite caracteres diferentes, pero ninguna página admite la amplitud completa de caracteres proporcionados por Unicode. Cada página de códigos de DBCS admite un subconjunto diferente, codificado de forma diferente. Los datos convertidos de una página de códigos DBCS a otra están sujetas a daños porque el mismo valor de datos en páginas de códigos diferentes puede codificar un carácter diferente. Los datos convertidos de Unicode a DBCS están sujetos a pérdida de datos, ya que es posible que una página de códigos determinada no pueda representar todos los caracteres usados en esos datos Unicode concretos.

 

Para interpretar una cadena DBCS, una aplicación debe iniciarse al principio de la cadena y examinar hacia delante. Realiza un seguimiento cuando encuentra un byte inicial en la cadena y trata el byte siguiente como la parte final del mismo carácter. Si la aplicación simplemente examina la cadena un byte a la vez y encuentra un byte que parece ser el valor de código que representa una barra diagonal inversa ("\"), ese byte podría ser simplemente el byte final de un carácter de dos bytes. La aplicación no puede hacer una copia de seguridad de un byte para ver si el byte anterior es un byte inicial, ya que ese valor de byte podría ser apto para usarse como byte inicial y un byte final. Por lo tanto, la aplicación tiene básicamente el mismo problema que con la posible barra diagonal inversa. En otras palabras, las búsquedas de subcadenas son mucho más complicadas con un DBCS que con SBCS o Unicode. En consecuencia, las aplicaciones que admiten DBCS deben usar funciones especiales, como _mbsstr, en lugar de la función StrStr .

Las aplicaciones usan páginas de códigos de Windows de DBCS con las versiones "A" de las funciones de Windows. Consulte Convenciones para prototipos de función y páginas de códigos. Para ayudar a identificar una página de códigos de DBCS, una aplicación puede usar la función GetCPInfo o GetCPInfoEx . Una aplicación puede usar la función IsDBCSLeadByte para determinar si se puede usar un valor determinado como byte inicial de un carácter de 2 bytes. Además, una aplicación puede usar las funciones MultiByteToWideChar y WideCharToMultiByte para asignar entre cadenas Unicode y DBCS.

Juegos de caracteres

Juegos de caracteres de un solo byte