1. 程式人生 > >C++ Unicode與UTF_8 編碼轉換

C++ Unicode與UTF_8 編碼轉換

void UTF_8ToUnicode(wchar_t* pOut,char *pText){
    char* uchar = (char *)pOut;
    uchar[1] = ((pText[0] & 0x0F) << 4) + ((pText[1] >> 2) & 0x0F);
    uchar[0] = ((pText[1] & 0x03) << 6) + (pText[2] & 0x3F);
}

void UnicodeToUTF_8(char* pOut,wchar_t* pText){
    // 注意 WCHAR高低字的順序,低位元組在前,高位元組在後
char* pchar = (char *)pText; pOut[0] = (0xE0 | ((pchar[1] & 0xF0) >> 4)); pOut[1] = (0x80 | ((pchar[1] & 0x0F) << 2)) + ((pchar[0] & 0xC0) >> 6); pOut[2] = (0x80 | (pchar[0] & 0x3F)); }

出處:

以上程式碼只能轉換第一個寬字元,要轉換全部可以加一個迴圈,如下:

string UnicodeToUTF_8(wchar_t* pText)
{
    // 注意 WCHAR高低字的順序,低位元組在前,高位元組在後
string str; char* pOut = new char[4]; memset(pOut, 0, 4); for (int i = 0; i < wcslen(pText); i ++) { char* pchar = (char *)&pText[i]; pOut[0] = (0xE0 | ((pchar[1] & 0xF0) >> 4)); pOut[1] = (0x80 | ((pchar[1] & 0x0F) << 2)) +((pchar[0] & 0xC0
) >> 6); pOut[2] = (0x80 | (pchar[0] & 0x3F)); str += pOut; } return str; }

還可以使用 iconv庫。