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字符串中的中文部分是乱码,应该怎么解决?
------解决方案--------------------
下面的函数我试过可以的:
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;
}