概要
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