//UNICODE编码
//返回转换后的UNICODE数据长度
int ConvUniStr2Unicode(LPCSTR szUnicodeString, WCHAR *pWchar, int iBuffSize)
{
int iRet = 0;
int iUstrLen = strlen(szUnicodeString);
ASSERT(pWchar);
ASSERT(iUstrLen%6 == 0);
int iOffset = 0;
while((iOffset < iUstrLen) && (iRet < iBuffSize-1))
{
const char *pStr = strstr(szUnicodeString + iOffset, "\\u");
if(pStr)
{
UINT wChar = -1;
sscanf_s(pStr+2, "%X", &wChar);
pWchar[iRet++] = wChar;
pWchar[iRet] = 0;
iOffset += 6;
}
else
{
break;
}
}
return iRet;
}
//UNICODE数据转换到UNICODE字符串
//返回转换后的字符串数据长度
int ConvUnicode2UniStr(WCHAR *pWchar, CHAR *pChar, int iBuffSize)
{
ASSERT(pChar);
char subBuff[8];
int iLength = 0;
int iMaxLen = wcslen(pWchar);
for(int i=0; (i<iMaxLen) && ((iLength+6) < (iBuffSize-1)) ; i++)
{
sprintf_s(subBuff, "\\u%04X", pWchar[i]);
strcpy_s(pChar + iLength, iBuffSize, subBuff);
iLength += 6;
}
return iLength;
}