1. 程式人生 > >C++ UTF-8與 Unicode互相轉換

C++ UTF-8與 Unicode互相轉換

C++   UTF-8 轉 Unicode


char* UTF8ToUnicode(char* szUTF8)
{
    int wcscLen = ::MultiByteToWideChar(CP_UTF8, NULL, szUTF8, strlen(szUTF8), NULL, 0);//得到所需空間的大小
    wchar_t* wszcString = new wchar_t[wcscLen + 1];//給'\0'分配空間
    ::MultiByteToWideChar(CP_UTF8, NULL,szUTF8, strlen(szUTF8), wszcString, wcscLen);   //轉換
    wszString[wcsLen] = '\0';
    char *m_char;
    int len = WideCharToMultiByte(CP_ACP, 0, wszcString, wcslen(wszcString), NULL, 0, NULL, NULL);
    m_char = new char[len + 1];
    WideCharToMultiByte(CP_ACP, 0, wszcString, wcslen(wszcString), m_char, len, NULL, NULL);
    m_char[len] = '\0';
    return m_char;
}

C++  Unicode轉 UTF-8

char* UnicodeToUTF8(wchar_t* wszcString)
{
    int utf8Len = ::WideCharToMultiByte(CP_UTF8, NULL, wszcString, wcslen(wszcString), NULL, 0, NULL, NULL);    //得到所需空間的大小
    char* szUTF8 = new char[utf8Len + 1];    //給'\0'分配空間
    ::WideCharToMultiByte(CP_UTF8, NULL, wszcString, wcslen(wszcString), szUTF8, utf8Len, NULL, NULL);    //轉換
    szU8[utf8Len] = '\0';
    return szUTF8;
}