none
UTF8 to Unicode RRS feed

  • 问题

  • 这段转换代码,有些汉字转换出来是乱码,但大部分是正常的。请帮忙看看,谢谢

     

    .
    // --------- UTF-8转Unicode ----------------
    int UTF8ToUnicodeCHAR(WCHAR* pOut,char *pText)
    {
    int ret = 0;
    char* uchar = (char *)pOut;
    unsigned cIn = (unsigned char)pText[0];
    if(cIn<0x80)
    { // ASCII 0x00 ~ 0x7f
    pOut[0] = pText[0];
    }
    else if(cIn<0xdf)
    {
    uchar[0] = (pText[0]<<6)|(pText[1]&0x3f);
    uchar[1] = (pText[0]>>2)&0x0f;
    ret = 1;
    }
    else if(cIn<0xef)
    {
    uchar[0] = (pText[1]<<6)|(pText[2]&0x3f);
    uchar[1] = (pText[0]<<4)|((pText[1]>>2)&0x0f);
    ret = 2;
    }else if(cIn<0xf7){
    uchar[0] = (pText[2]<<6)|(pText[3]&0x3f);
    uchar[1] = (pText[1]<<4)|((pText[2]>>2)&0x0f);
    uchar[2] = ((pText[0]<<2)&0x1c)|((pText[1]>>4)&0x03);
    ret = 3;
    }
    return ret;
    }
    int UTF8ToUnicodeSTRING(WCHAR* pOut,char *pText,int Len){
    int i,j;
    for(i=0,j=0;i<Len;i++,j++)
    {
    i+=UTF8ToUnicodeCHAR(&pOut[j],&pText[i]);
    }
    return j;
    }
    2010年8月19日 6:22

答案

  • 你好!

        当转换编码方式的时候,是有可能出现乱码的。如果不想出现乱码,最好还是使用原来的编码方式来解析。

        所以并非是程序有什么问题,这个功能就是如此的。


    周雪峰
    2010年8月23日 13:38
    版主