C++ 读取html 文件乱码,该如何处理

C++ 读取html 文件乱码
FILE *linux;
linux=fopen(n,"r"); //n中存放的是文件地址,例如c://sawyer.html
char c2;
string ss;
if(NULL!=linux){
while(1){
c2=fgetc(linux); //每次读取一个字符
if (EOF==c2) 
break;
while(c2!='\n' && EOF!=c2){
ss=ss+c2; //读html文件中的一行为单位
c2=fgetc(linux);
}
cout<<ss<<endl;
  ss="";
  }
}


求大牛指点,输出的ss字符串中的中文部分是乱码,应该怎么解决?

------解决方案--------------------
下面的函数我试过可以的:

C/C++ code

void aaa()
{
    FILE *linux;
    linux=fopen("D:\\zz.htm","rb"); 
    BYTE cc[10000];

    memset(cc,0,10000);

    fread(cc,1,9999,linux);

    WORD bb[10000];
    memset(bb,0,20000);

    FromUTF8ToUnicode(cc,5000,bb,10000);

    fclose(linux);
}

------解决方案--------------------
//先用UTF8->Uncoide
//在Uncoide->GB
wchar_t *UTF8ConverUncoide(const char *strUtf8)

wchar_t *strUn;
int len = (int)strlen(strUtf8) + 1;
strUn = new wchar_t[len];
memset(strUn, 0, len << 1);
MultiByteToWideChar(CP_UTF8,0, strUtf8, len, strUn, len);
return strUn;
}

char *UncoideConverGB(const wchar_t *strUn)
{
char *strGb; 
int len = (int)(wcslen(strUn) + 1);
strGb = new char [len << 1];
memset(strGb, 0, len << 1);
WideCharToMultiByte( CP_ACP, 0, strUn, -1, strGb, len << 1, NULL, NULL );
return strGb;
}