http响应是gbk编码,用binarytostring后有乱码!
utf-8编码的http响应用binarytostring后显示正确,但gbk编码的http响应用binarytostring就有错码,几个参数都试过搞不懂,望高手指点 不知道行不行//GBK编码转换到UTF8编码int GBKToUTF8(unsigned char * lpGBKStr,unsigned char * lpUTF8Str,int nUTF8StrLen)
{
wchar_t * lpUnicodeStr = NULL;
int nRetLen = 0;
if(!lpGBKStr)//如果GBK字符串为NULL则出错退出
return 0;
nRetLen = ::MultiByteToWideChar(CP_ACP,0,(char *)lpGBKStr,-1,NULL,NULL);//获取转换到Unicode编码后所需要的字符空间长度
lpUnicodeStr = new WCHAR;//为Unicode字符串空间
nRetLen = ::MultiByteToWideChar(CP_ACP,0,(char *)lpGBKStr,-1,lpUnicodeStr,nRetLen);//转换到Unicode编码
if(!nRetLen)//转换失败则出错退出
return 0;
nRetLen = ::WideCharToMultiByte(CP_UTF8,0,lpUnicodeStr,-1,NULL,0,NULL,NULL);//获取转换到UTF8编码后所需要的字符空间长度
if(!lpUTF8Str)//输出缓冲区为空则返回转换后需要的空间大小
{
if(lpUnicodeStr)
delete []lpUnicodeStr;
return nRetLen;
}
if(nUTF8StrLen < nRetLen)//如果输出缓冲区长度不够则退出
{
if(lpUnicodeStr)
delete []lpUnicodeStr;
return 0;
}
nRetLen = ::WideCharToMultiByte(CP_UTF8,0,lpUnicodeStr,-1,(char *)lpUTF8Str,nUTF8StrLen,NULL,NULL);//转换到UTF8编码
if(lpUnicodeStr)
delete []lpUnicodeStr;
return nRetLen;
} binarytostring 没有GBK这个选项。这应该是乱码的原因。满世界没找到办法?楼上提供的代码不知道在autoit中咋用? _winapi_MultiByteToWideChar
_winapi_WideCharToMultiByte说白了,就是这两个函数 你给个gbk编码的网页
页:
[1]