Как се конвертират числа с пълна ширина в числа с половин ширина


Обобщена информация


Когато се конвертират Unicode числа с пълна ширина (U + FF10-U + FF19) към стандартни числа с половин ширина (U +0030-U + 0039), докато се използва WideCharToMultiByte, не може да се извърши преобразуването в Windows 95 и 98. Човек трябва да използва API LCMapString с флаг LCMAP_HALFWIDTH, за да конвертира знаците с пълна ширина на знаците с половин ширина.

Повече информация


Тъй като версията W на този API не работи в Windows 95 и Windows 98 1 трябва да конвертира знаците с пълна ширина от Unicode към подходящи DBCS низове и след това да се обадите на LCMapString, за да извършите преобразуването. Ето пример за работа с Unicode числа с пълна ширина в традиционен китайски, опростен китайски, японски и корейски:
#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);}
За да направи преобразуването работа за Windows 95 и Windows 98, инсталирайте една от четирите кодови страници (950 за традиционен китайски, 936 за опростен китайски, 932 за японски и 949 за корейски) в системата и изрично Настройте кодовата страница и параметрите на ИД на локалната версия на горните API повиквания.

Препратки


За повече информация относно инсталирането на кодова страница щракнете върху следния номер на статия, за да видите статията в базата знания на Microsoft:
164948 Как да инсталирате кодова страница