C++ Unicode 轉Utf-8

    wchar_t* wszString = L"男性";
    //預轉換,得到所需空間的大小,這次用的函數和上面名字相反
    int u8Len = ::WideCharToMultiByte(CP_UTF8, NULL, wszString, wcslen(wszString), NULL, 0, NULL, NULL);
    //同上,分配空間要給'\0'留個空間
    //UTF8雖然是Unicode的壓縮形式,但也是多字節字符串,所以可以以char的形式保存
    char* szU8sex = new char[u8Len + 1];
    //轉換
    //unicode版對應的strlen是wcslen
    int size = wcslen(wszString);
    ::WideCharToMultiByte(CP_UTF8, NULL, wszString, wcslen(wszString), szU8sex, u8Len, NULL, NULL);
    //最後加上'\0'
    szU8sex[u8Len] = '\0';

 

 

char sBuf[25]={0}; strcpy(sBuf, "我最棒");

//獲取輸入緩存大小

int sBufSize=strlen(sBuf);

//獲取輸出緩存大小 //VC++ 默認使用ANSI,故取第一個參數爲CP_ACP DWORD

dBufSize=MultiByteToWideChar(CP_ACP, 0, sBuf, sBufSize, NULL, 0);

printf("需要wchar_t%u個\n", dBufSize);

wchar_t * dBuf=new wchar_t[dBufSize];

wmemset(dBuf, 0, dBufSize); //進行轉換

int nRet=MultiByteToWideChar(CP_ACP, 0, sBuf, sBufSize, dBuf, dBufSize);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章