怎么解决http响应打印出乱码的有关问题

如何解决http响应打印出乱码的问题
C/C++ code
#include <winsock.h>
#include <stdio.h>
int main()
{
    WSADATA wsaData;
    
    int Ret;


    if ((Ret = WSAStartup(MAKEWORD(1,1), &wsaData)) != 0)
    {
      printf("WSAStartup failed with error %d\n", Ret);
    }
    SOCKET socketfd;
    struct sockaddr_in addr;
    int connectfd = 0;

    char strsend[255], buffer[1024*1024];

    memset((void*)strsend, 0, sizeof(strsend));
    memset((void*)buffer, 0, sizeof(buffer));

    memset((void*)&addr, 0, sizeof(addr));
    
    addr.sin_family = AF_INET;
    addr.sin_port = htons(80);
    addr.sin_addr.S_un.S_addr = inet_addr("222.186.13.209");

    socketfd = socket(AF_INET, SOCK_STREAM, 0);

    if(socketfd < 0)
    {
      printf("socket fail %d\n");
    }

    connectfd = connect(socketfd, (struct sockaddr*)&addr, sizeof(addr));
    if(connectfd < 0)
        printf("connect fail\n");

    strcpy(strsend, "GET /index.html HTTP/1.0\r\nHost:www.soshu.cn\r\n\r\n");

    connectfd = send(socketfd, strsend, sizeof(strsend), 0);
    
    connectfd = recv(socketfd, buffer, sizeof(buffer), 0);
    if(connectfd == SOCKET_ERROR)
    {
      printf("%d\n",WSAGetLastError());
    }
      else printf("%s\n",buffer);
      FILE* pFile = fopen("11.html","wb");
      fprintf(pFile,buffer);
      fclose(pFile);
      //close(socketfd);
    
    if (WSACleanup() == SOCKET_ERROR)
    {
      printf("WSACleanup failed with error %d\n", WSAGetLastError());
    }
    
    getchar();
    return 0;
}


------解决方案--------------------
HTTP有一个参数叫Accept-Encoding,用来表示可以接收的编码类型,当取gzip,deflate时,服务器给返回的时压缩过后的数据,需要解压后才能看到原文,可以取plain,服务器就直接返回HTML源码了
------解决方案--------------------
如果是中文乱码的话,那可能要服务端的文件改编码
如果连普通字符都乱码,那就要像一楼说的那样
在发送请求时,加一个http header,设置accept-encoding为plain
------解决方案--------------------
探讨
HTTP有一个参数叫Accept-Encoding,用来表示可以接收的编码类型,当取gzip,deflate时,服务器给返回的时压缩过后的数据,需要解压后才能看到原文,可以取plain,服务器就直接返回HTML源码了