YunHai
版主
  
UID 5004
精华
0
积分 5934
帖子 5934
阅读权限 100
注册 2002-1-12 来自 黑龙江
状态 离线
|
给你点提示
int Utf8ToAnsi(const char *szUtf8, char *szAnsi )
{
wchar_t *szUnicode = NULL;
int iLengthUnicode = 0;
iLengthUnicode = MultiByteToWideChar(CP_UTF8, 0, szUtf8, (int)strlen(szUtf8), NULL, 0);
szUnicode = new wchar_t[ iLengthUnicode ];
memset(szUnicode, 0, sizeof(wchar_t)*(iLengthUnicode));
MultiByteToWideChar(CP_UTF8, 0, szUtf8, (int)strlen(szUtf8), szUnicode, iLengthUnicode);
char *szAnsiString = NULL;
int iLengthAnsiString = 0;
iLengthAnsiString = WideCharToMultiByte(CP_ACP, 0, szUnicode, iLengthUnicode, NULL, 0, NULL, NULL);
szAnsiString = new char[ iLengthAnsiString];
memset(szAnsiString, 0, sizeof(char)*(iLengthAnsiString));
WideCharToMultiByte(CP_ACP, 0, szUnicode, iLengthUnicode, szAnsiString, iLengthAnsiString, NULL, NULL);
if(szAnsi )
{
memcpy(szAnsi, szAnsiString, (iLengthAnsiString));
szAnsi[iLengthAnsiString] = 0;
}
if(szUnicode) {delete[] szUnicode; szUnicode = NULL;}
if(szAnsiString) {delete[] szAnsiString; szAnsiString = NULL;}
return iLengthAnsiString;
}
|
|