我正在编写一些 C# VSTO 代码,用于读取 Microsoft Word 文档并将其保存到筛选的 HTML。当我对通用 Word 文档执行此函数时,html 文件的输出使用 Windows 字符集,如下所示:
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
如果我打开一个文档并转到“文件”->“选项”->“高级”->“Web 选项”,我可以选择 UTF8,结果过滤后的 html 文档输出如下所示:
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
我想编写可以保存的 C# 代码anyWord 文档使用 utf-8 过滤 html。经过一些研究,我发现有些人说“SaveAs2”功能不起作用(尽管微软将其记录为一项功能)。这意味着,这段代码对我不起作用:
doc.SaveAs2("C:\\Temp\\Test.htm", MsWord.WdSaveFormat.wdFormatFilteredHTML, Encoding: "65001");
(注意:我尝试将 65001 加引号和不加引号。都没有抛出错误,但都不起作用)。
接下来,我继续为文档设置 Web 选项,如下所示:
doc = app.Documents.Open("C:\\Temp\\Test.docx");
doc.WebOptions.Encoding = Microsoft.Office.Core.MsoEncoding.msoEncodingUTF8;
doc.SaveAs2(destFile, MsWord.WdSaveFormat.wdFormatFilteredHTML);
据我所知,上面的代码执行与我手动打开文件相同的功能,转到文件->选项...,设置为 UTF-8 并将文件保存到过滤后的 html,但输出仍然看起来像这:
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
有没有办法强制 Microsoft Word 将文件输出为 UTF-8,而无需先手动配置文档?