摘要
在使用 WideCharToMultiByte 将全角 Unicode 号码(U + FF10 + FF19)转换为标准的半角数字(U +0030-U + 0039)时,无法在 Windows 95 和98上执行转换。 应将 API LCMapString 与标志 LCMAP_HALFWIDTH 结合使用,将全角字符转换为半角字符。
更多信息
由于此 API 的 W 版本在 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),并在上述 API 调用中显式设置代码页和区域设置 ID 参数。
参考
有关安装代码页的详细信息,请单击下面的文章编号,查看 Microsoft 知识库中的文章:
164948 如何安装代码页