将Word保存为UTF-8编码的HTML

本文关键字:编码 HTML UTF-8 Word 保存 | 更新日期: 2023-09-27 18:25:17

我正在编写一些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#代码,用utf-8将任何Word文档保存到过滤后的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);

据我所知,上面的代码执行的功能与我手动打开文件的功能完全相同,转到file->options。。。,设置为UTF-8并将文件保存为过滤后的html,但输出仍然如下所示:

<meta http-equiv=Content-Type content="text/html; charset=windows-1252">

有没有一种方法可以强制Microsoft Word将文件输出为UTF-8,而不必首先手动配置文档?

将Word保存为UTF-8编码的HTML

在撰写本文时,尚不清楚我是否在特定版本的Microsoft Word(Word Online)或VSTO模板中遇到了错误,但我将在这里回答是什么让我成功。

如果此代码不起作用:

doc = app.Documents.Open("C:''Temp''Test.docx");
doc.WebOptions.Encoding = Microsoft.Office.Core.MsoEncoding.msoEncodingUTF8;
doc.SaveAs2("C:''Temp''Test.htm", MsWord.WdSaveFormat.wdFormatFilteredHTML);

然后,更改代码以刷新文档的字段,如下所示:

doc = app.Documents.Open("C:''Temp''Test.docx");
doc.Fields.Update(); // ** this is the new line of code.
doc.WebOptions.Encoding = Microsoft.Office.Core.MsoEncoding.msoEncodingUTF8;
doc.SaveAs2("C:''Temp''Test.htm", MsWord.WdSaveFormat.wdFormatFilteredHTML);

在Visual Studio中,您必须添加一个引用:

在您的项目中:

"MyProject">解决方案资源管理器>参考资料>添加参考资料>COM>Microsoft Office 16.0对象库

VS给出了一个非常神秘的错误,它并不能真正帮助找到库。