Аннотация
При преобразовании полных чисел Юникод (U + FF10-U + FF19) в стандартные полуширинные числа (U +0030-U + 0039) при использовании WideCharToMultiByte, она не может выполнить преобразование в Windows 95 и 98. Для преобразования полноширинных знаков в знаки половинной ширины в одном из них следует использовать API LCMapString с флагами LCMAP_HALFWIDTH.
Дополнительная информация
Поскольку версия W этого API не работает в Windows 95 и Windows 98 1, необходимо преобразовать полноширинные знаки из Юникода в соответствующие строки DBCS, а затем вызвать LCMapString для выполнения преобразования. Ниже приведен пример работы с полными числами Юникода на традиционном китайском, упрощенном китайском, японском и корейском языках.
#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.
Ссылки
Чтобы получить дополнительные сведения об установке кодовой страницы, щелкните следующий номер статьи базы знаний Майкрософт:
164948 Установка кодовой страницы