옵션 |
|
안녕하세요 초보개발자입니다.
현재 InternetReadFile로 웹상의 데이터를 읽어왔는데 한글부분이 깨지는 현상이 발견되었습니다. 그리고 읽어온 파일을 텍스트에 써서 보니 숫자값도 2byte로 넘어오는것 같더라구요...
이것저것 찾아보면서 uft-8->unicode->ansi 로 인코딩을 해야된다고 해서 그부분도 해보았는데 여전히 깨지는 현상이 나타납니다. 웹에서는 기본적으로 UTF-8로 charset이 되어있는데 EUC-KR로 변경해보아도 동일합니다. 기본적으로 웹에서 내려주는 방법이 잘못된건가요 아니면 제가 받아서 인코딩을 새로 해야 하는건가요? 아래는 c++ 소스입니다. char szBuf[40+1] = {0}; DWORD dwSize = 0; BOOL bRead = TRUE; int iCnt = 1; int iLen = 0; char cTemp[40+1]; BSTR bstr; FILE* fp = fopen("Hgfragile.txt", "a"); while(bRead) { memset(szBuf, 0x00, sizeof(szBuf)); memset(cTemp, 0x00, sizoef(cTemp)); bRead = InternetReadFile( hOpenRequest, szBuf, sizeof(szBuf)-1, &dwSize); if(dwSize == 0 || szBuf[0] == 0x00) break; iLen = MultiByteToWideChar(CP_ACP, 0, szBuf, lstrlen(szBuf), NULL, NULL); bstr = SysAllocStringLen(NULL, iLen); MultiByteToWideChar(CP_ACP, 0, szBuf, lstrlen(szBuf), bstr, iLen); iLen = WideCharToMultiByte(CP_ACP, 0, bstr, -1, cTemp, 0, NULL, NULL); WideCharToMultiByte(CP_ACP, 0, bstr, -1, cTemp, iLen, NULL, NULL); strTmp.Format("szBuf = %s\ncTemp = %s\n\n", szBuf, cTemp); iCnt++; fprintf(fp, strTmp); } fclose(fp); 고수님들 부탁드립니다.
감사합니다. |