2014-02-10 31 views
0

我試圖將unicode字符串序列化爲UTF-8 w/o BOM文件。由於某些原因,下面的代碼給出錯誤的輸出。將字符串序列化爲UTF而不是BOM

static void MyWriteFile(HANDLE hFile, PTCHAR pszText, int cchLen, BOOL bAsUnicode) 
{ 
    DWORD dwBytes; 
    size_t utf8len = WideCharToMultiByte(CP_UTF8, 0, pszText, -1, NULL, 0, NULL, NULL); 
    PCHAR pszConverted = (PCHAR)LocalAlloc(LPTR, utf8len); 

    WideCharToMultiByte(CP_UTF8, 0, pszText, utf8len, pszConverted, utf8len, 0, 0); 
    WriteFile(hFile, pszConverted, utf8len, &dwBytes, NULL); 
} 

回答

0
WideCharToMultiByte(CP_UTF8, 0, pszText, utf8len, pszConverted, utf8len, 0, 0); 

WideCharToMultiByte(cchWideChar)的第四個參數是輸入字符串的大小。您應該將其保留爲-1,因爲它是空的。否則你的輸出緩衝區可能不夠大,並且它將包含太多的數據。

相關問題