東アジア言語の全角数字を標準の数字に変換する方法


概要


Windows 95 や Windows 98 で WideCharToMultiByte を使用しても、Unicode の全角数字 (U+FF10 ~ U+FF19) を標準の半角数字 (U+0030 ~ U+0039) に変換することはできません。全角文字を半角文字に変換するには、LCMapString API を LCMAP_HALFWIDTH フラグと共に使用する必要があります。

詳細


Windows 95 や Windows 98 では W バージョンの API が動作しないため、全角文字を変換するには、Unicode 文字列を対応する DBCS 文字列に変換してから LCMapString を呼び出す必要があります。すべての東アジア言語版 (簡体字中国語、繁体字中国語、日本語、および韓国語) の Windows 95 および Windows 98 で動作するサンプルを次に示します。
#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 で変換を行うには、4 つの東アジア言語のコード ページ (日本語は 932、簡体字中国語は 936、韓国語は 949、繁体字中国語は 950) の 1 つをシステムにインストールし、上記の各 API 呼び出しでコード ページとロケール ID のパラメータを明示的に設定する必要があります。

関連情報


コード ページのインストールの詳細については、次の資料を参照してください。
164948 HOWTO: Installing a Code Page