#include <windows.h> #include <stdlib.h> #include <stdio.h> ///////////////////////////////////////////////////////////////////////////// int utf2oem(char* inp, char* outp, int outpLen) { int ret, i; LPWSTR mem; i = MultiByteToWideChar(CP_UTF8, 0, inp, -1, NULL, 0); if(!i) return 0; mem = malloc(i * 2); i = MultiByteToWideChar(CP_UTF8, 0, inp, -1, mem, i * 2); ret = WideCharToMultiByte(CP_OEMCP, 0, mem, i, outp, outpLen, NULL, NULL); free(mem); return ret; } ///////////////////////////////////////////////////////////////////////////// int main() { int len; FILE* f; char *mem, mbyte[0x100]; f = fopen("utf.txt", "rb"); fgets(mbyte, sizeof(mbyte), f); fclose(f); len = utf2oem(&mbyte[3], NULL, 0); //get output buffer length if(!len) return -1; mem = malloc(len); if(!mem) return -1; utf2oem(&mbyte[3], mem, len); //convert puts(mem); free(mem); return 0; } |