如题

解决方案 »

  1.   

    int UCS2UTF8(wchar_t* pUCS,char* pUTF8)
    {
     int UCSlen = 0, UTF8len = 0, i;
     char* pTempUTF8 = NULL;
     UCSlen = wcslen(pUCS); if(pUCS == NULL || pUTF8 == NULL)
      return -1;
     
     pTempUTF8 = pUTF8;
     for(i = 0; i < UCSlen; i++)
     {
      if(pUCS[i] <= 0x007F)//1 byte 0xxxxxxx
      {
       *(pTempUTF8++) = LOBYTE(pUCS[i]);
       UTF8len++;
      }
      else if(pUCS[i] <=0x07FF)//2 bytes 110xxxxx 10xxxxxx
      {
       *(pTempUTF8++) = HIBYTE(pUCS[i] << 2) & 0x3F | 0xC0;
       *(pTempUTF8++) = LOBYTE(pUCS[i] & 0x3f) | 0x80;
       UTF8len += 2;
      }
      else//3 bytes 1110xxxx 10xxxxxx 10xxxxxx
      {
       *(pTempUTF8++) = HIBYTE(pUCS[i] >> 4) | 0xe0;
       *(pTempUTF8++) = HIBYTE(pUCS[i] << 2) & 0x3F | 0x80;
       *(pTempUTF8++) = LOBYTE(pUCS[i]) & 0x3F | 0x80;
       UTF8len += 3;
      }
     }
     
     return UTF8len;
    }
      

  2.   

    int ToUCS(char *p,wchar_t* pUCS,int codepage)
    {
     int len = 0; if(pUCS == NULL || p == NULL)
      return -1;
     len = MultiByteToWideChar(codepage,0,p,-1,NULL,0);
     MultiByteToWideChar(codepage,0,p,-1,pUCS,len);
     return len;
    }