WideCharToMultiByte函數映射一個unicode字符串到一個多字節字符串。
函數原型:
int WideCharToMultiByte
參數:
CodePage:指定執行轉換的代碼頁,這個參數可以為系統已安裝或有效的任何代碼頁所給定的值。你也可以指定其為下面的任意一值:
相關變量
生成utf-8編碼的文件
步驟如下:
1. 首先要寫一個BOM頭。UTF-8文件一般是要這個頭的,當然也可以沒有。
2. 將要生成的字符先使用寬字符格式生成,然后調用WideCharToMultiByte轉為utf-8編碼,寫入文件。
例子如下:
FILE * pFile = fopen("d://a.txt", "w"); char szBOM[4] = {(char)0xEF, (char)0xBB, (char)0xBF, 0}; fprintf(pFile, "%s", szBOM); wchar_t chNum[11] = L"零壹貳叁肆伍陸柒捌玖"; wchar_t chNum2[10] = L"億千百拾萬千百拾個"; char sz[10] = "112304823"; wchar_t result[32] = L""; int offset = 0; for(int i = 0; i < strlen(sz); ++ i) { char c = sz[i]; wchar_t w1 = chNum[ c - '0']; wchar_t w2 = chNum2[i]; swprintf(result + offset, L"%c%c", w1, w2); offset += 2; } char szChar[64] = ""; ::WideCharToMultiByte(CP_UTF8, 0, result, wcslen(result), szChar, 64, 0, 0); fprintf(pFile, "%s", szChar); fclose(pFile);
注意的是,當使用wchar_t而不再是char時,所有的字符串操作函數都需要時w系列的,例如wcslen、swprintf
新聞熱點
疑難解答