C++将UTF-8编码的文件转化为GB2312编码
-
我需要对一个html网页进行解析,html是使用UTF-8编码的。但是,我使用的visual Studio 19是使用gb2312进行编码的。当读入html文件并在控制台上输出时,中文自然全部变成了乱码
-
所以,需要通过某些操作,对读入的字符串进行转化,将UTF-8编码转为GB2312编码
-
在网上看了很多文章,都没有解决问题,或者过于复杂,或者年代久远编译器不再支持。
-
以下代码可直接解决问题
char* Utf8ToGb2312(char *p) //unicode转国标
{
DWORD dwNum = MultiByteToWideChar(CP_UTF8,0,p,-1,NULL,0);
char *psText; //存储文件名
wchar_t *pwText=(wchar_t*)malloc(dwNum*sizeof(wchar_t));
dwNum = MultiByteToWideChar(CP_UTF8,0,p,-1,pwText,dwNum);
dwNum = WideCharToMultiByte(CP_ACP,0,pwText,-1,NULL,0,NULL,NULL);
psText=(char*)malloc(dwNum*sizeof(char));
dwNum = WideCharToMultiByte(CP_ACP,0,pwText,-1,psText,dwNum,NULL,NULL);
free(pwText);
return psText;
}
- p为原字符串,返回转码后的新字符串