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 conjunto de caracteres de de un solo byte (SBCS), implementado como página de códigos. Los DBCSs 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 obtener definiciones de estas páginas de código, consulte 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 siguiente byte como la parte final del mismo carácter. Si la aplicación simplemente examina la cadena de 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 principal, ya que ese valor de byte podría ser apto para usarse como byte principal y un byte final. Por lo tanto, la aplicación tiene esencialmente 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ónStrStr.
Las aplicaciones usan páginas de códigos de Windows de DBCS con las versiones "A" de las funciones de Windows. Consulte convenciones de 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óngetCPInfo o getCPInfoExo GetCPInfoEx. Una aplicación puede usar la función IsDBCSLeadByte para determinar si se puede usar un valor determinado como byte principal 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.
Temas relacionados