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: あいうえおかきくけこ