Cómo convertir números de ancho completo en números de ancho medio


Resumen


Al convertir los números Unicode de ancho completo (U + FF10-U + FF19) en números de medio ancho estándar (U +0030-u + 0039) al utilizar WideCharToMultiByte, no se realiza la conversión en Windows 95 y 98. Una debe usar la API LCMapString con Flag LCMAP_HALFWIDTH para convertir los caracteres de ancho completo en caracteres de ancho medio.

Más información


Puesto que la versión W de esta API no funciona en Windows 95 y Windows 98 1 necesita convertir los caracteres de ancho completo de Unicode en cadenas DBCS correctas y, a continuación, llamar a LCMapString para realizar la conversión. Este es un ejemplo de trabajo con números Unicode de ancho completo en chino tradicional, Chino simplificado, Japonés y Coreano:
#include <stdio.h>#include <tchar.h>#include <windows.h>void main(void){WCHAR T[2] = {65301, 0};TCHAR dbcs[3], conv[3];WideCharToMultiByte(CP_ACP, 0, T, -1, dbcs, sizeof(dbcs), NULL, NULL);int nRes = LCMapString(LOCALE_USER_DEFAULT, LCMAP_HALFWIDTH,                                                       dbcs,sizeof(dbcs),conv,sizeof(conv));printf("%s\n",conv);}
Para que la conversión funcione para Windows 95 y Windows 98, instale una de las cuatro páginas de códigos (950 para chino tradicional, 936 para chino simplificado, 932 para japonés y 949 para Coreano) en el sistema y establezca de forma explícita los parámetros de la página de códigos y del identificador de configuración regional en las llamadas API anteriores.

Referencias


Para obtener más información sobre cómo instalar una página de códigos, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
164948 Cómo instalar una página de códigos