使用CFile对象,代码打开一个“ANSI as UTF8”编码的文件。修改文本并使用write函数覆盖文件后,编码将更改为ANSI。
尝试使用以下代码更改正在编写的文本的编码。
CComBSTR bstrContent;
m_spDOMDocument->get_xml(&bstrContent);
CString strContent(bstrContent);
CT2CA outputString(strContent, CP_UTF8);
File.SetLength(0);
File.SeekToBegin();
File.Write(strContent, ::strlen(outputString));
File.SeekToBegin();
这是UTF-8, CString and CFile? (C++, MFC)
中的建议该文件仍然使用ANSI编码编写。 如何以UTF 8格式写入文件?
答案 0 :(得分:0)
您没有正确使用CT2CA,无论如何只需使用CW2CA直接从宽BSTR转换。
试试这个:
CStringA outputString( CW2CA(bstrContent, CP_UTF8))
然后将基于char
的{{1}}写入文件而不是strContent(我无法判断它是否广泛)。
此外,您还没有编写BOM(字节对象标记),这可能会导致某些编辑器出现问题。看看这个: What's different between UTF-8 and UTF-8 without BOM?