WINAPIのMultiByteToWideCharとWideCharToMultiByteを使って、
UTF-8からSHIFT-JISへの変換を行っているんですが、関数は成功しているっぽいのに変換されません。
コードを貼り付けますので、どこがおかしいのかご指摘願います。
#include <stdio.h>
#include <windows.h>
int main(void)
{
//これがUTF-8の文字
char buf[]="%e3%83%a9%e3%83%ab%e3%82%af%e3%82%a2%e3%83%b3%e3%82%b7%e3%82%a8%e3%83%ab%e3%81%af%e7%a5%9e";
wchar_t *utf16;
char *shiftjis;
int size;
size=MultiByteToWideChar(CP_UTF8,0,buf,-1,NULL,NULL);
printf("UNICODE変換に必要なサイズ:%d\n",size);
utf16=new wchar_t[size+1];
size=MultiByteToWideChar(CP_UTF8,0,buf,-1,utf16,size);
if(size==0){
puts("変換失敗");
return -1;
}
size=WideCharToMultiByte(CP_ACP,0,utf16,-1,NULL,NULL,NULL,NULL);
printf("SHIFTJIS変換に必要なサイズ:%d\n",size);
shiftjis=new char[size+1];
size=WideCharToMultiByte(CP_ACP,0,utf16,-1,shiftjis,size,NULL,NULL);
if(size==0){
puts("SHIFTJIS変換に失敗したようです");
return -1;
}
puts("変換成功。表示します\n");
printf("%s\n",shiftjis);
return 0;
}