在VC ++ Cfile中使用UTF8编码

时间:2014-01-22 13:10:10

标签: visual-c++ encoding utf-8 mfc

使用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格式写入文件?

1 个答案:

答案 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?