WIn32API Shell APIでUnicode-Ansiの文字列を相互に変換する
SHAnsiToUnicode関数と SHUnicodeToAnsi関数を用いる。
#include <windows.h> #include <stdio.h> #include <locale.h> #include <shlwapi.h> #pragma comment(lib, "shlwapi.lib") int main() { WCHAR wcs[32]; char mbs[32]; //Unicode文字列をコンソールに表示させるため setlocale(LC_ALL, setlocale(LC_CTYPE, "")); //Ansi -> Unicode ::SHAnsiToUnicode("あいうえおかきくけこ", wcs, sizeof(wcs)/sizeof(wcs[0])); wprintf(L"Unicode: %s\n", wcs); //Unicode -> Ansi ::SHUnicodeToAnsi(wcs, mbs, sizeof(mbs)/sizeof(mbs[0])); printf("Ansi: %s\n", mbs); return 0; }
Unicode: あいうえおかきくけこ Ansi: あいうえおかきくけこ