WinCE中Unicode文字文件的編寫

來源:互聯網
上載者:User

在程式啟動並執行時候通常要記錄一些log檔案,通常使用的方法是把程式運行資訊輸出到txt文本。

因為WinCE中使用的是Unicode,普通的windows,ANSI txt文本編寫方法在WinCE中使用不了。

在WinCE之中,預設使用Unicode雙位元組編碼而非傳統系統的ANSI單位元組,

因此在編寫txt文本的時候,需要進行一些設定,才能無亂碼的查看。

 

呵呵,說白了就是要寫Unicode編碼的TXT文本。

Unicode編碼文本與ANSI編碼文本的區別是:Unicode文本的前面兩個位元組內容是FF FE.

因此在WinCE建立文本的時候需要先寫兩個位元組的內容FF FE,說明該文本是Unicode的。

 

然後在調用WriteFile的時候也需要注意一個地方,就是要寫入字串的長度。

由於Unicode是雙位元組的,而WriteFile是按位元組計算的,因此寫入的字串要乘以2.

由於Windows是低位元組在前,高位元組在後的,因此如果設定Unicode標記則為

WORD wUnicodeFlag = 0xFEFF;

 

BOOLWriteToFile(LPCTSTR lpData)<br />{<br />BOOL bResult = FALSE;<br />HANDLE hFile;<br />DWORD dwByteWrite;<br />TCHAR szBuf[256];</p><p>hFile = CreateFile(TEXT("//RegRecord.txt"),<br />GENERIC_READ | GENERIC_WRITE,<br />0,// Share mode<br />NULL,// lpSecurityAttribute<br />OPEN_ALWAYS,// Create disposition<br />FILE_ATTRIBUTE_NORMAL,<br />NULL);<br />if (hFile == INVALID_HANDLE_VALUE)<br />{<br />StringCchPrintf(szBuf, 256, TEXT("WriteFile:%d"), GetLastError());<br />MessageBox(NULL, szBuf, TEXT("Error"), MB_ICONERROR);<br />return bResult;<br />}<br />// Write the unicode flag<br />if (GetLastError() != ERROR_ALREADY_EXISTS)<br />{<br />WORD wUnicodeFlag;<br />wUnicodeFlag = 0xFEFF;<br />if (!WriteFile(hFile, &wUnicodeFlag, sizeof(WORD), &dwByteWrite, NULL))<br />{<br />StringCchPrintf(szBuf, 256, TEXT("WriteFile:%d"), GetLastError());<br />MessageBox(NULL, szBuf, TEXT("Error"), MB_ICONERROR);<br />}<br />}<br />SetFilePointer(hFile, 0, NULL, FILE_END);</p><p>if (!WriteFile(hFile,<br />lpData,<br />_tcslen(lpData)*sizeof(TCHAR),// bytes wait to write.<br />&dwByteWrite,<br />NULL))<br />{<br />StringCchPrintf(szBuf, 256, TEXT("WriteFile:%d"), GetLastError());<br />MessageBox(NULL, szBuf, TEXT("Error"), MB_ICONERROR);<br />}<br />else<br />{<br />bResult = TRUE;<br />}</p><p>CloseHandle(hFile);<br />return bResult;<br />}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.