首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

MFC 創建 ANSI 編碼文本文件方法

     編輯:程式設計疑難解答

默認行為

MFC CFile::Open 配合 CStdioFile 寫入 CString(Unicode 建構時為 UTF-16),若直接 WriteString 會寫入 UTF-16 LE(帶 BOM),即 Unicode 文件。

創建 ANSI 文件步驟

  1. 以二進制模式打開:file.Open(path, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);
  2. 手動寫入 ANSI 字節:將 CString 轉為 char*(CT2A 或 WideCharToMultiByte(CP_ACP,...)),再 file.Write(buf, len);
  3. 不寫入 BOM(0xFF 0xFE),即為純 ANSI。

代碼示例

CFile file;
file.Open(_T("test.txt"), CFile::modeCreate|CFile::modeWrite|CFile::typeBinary);
CStringW str = L"中文測試";
int len = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);
char* buf = new char[len];
WideCharToMultiByte(CP_ACP, 0, str, -1, buf, len, NULL, NULL);
file.Write(buf, len - 1); // 不寫入結束符 \0
delete[] buf;
file.Close();

參考:MFC 文件編碼控制詳解

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved