C++ UTF-8與 Unicode互相轉換
阿新 • • 發佈:2019-01-02
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; }