如何 link 并将 UTF8 编码的文本文件嵌入到 MS-Word 文档中?

How do I link and embed a UTF8 encoded text file in an MS-Word document?

我想将 UTF8 文本文件的内容作为 link 包含在 MS Word 文档中。这适用于使用以下字段的 ansi 编码文件:

{INCLUDETEXT "path\file.txt" \c ansitext \* MERGEFORMAT}

UTF8 文件是否有类似于 \c ansitext 的指令? \c utf8\c utf8text 似乎不起作用。

如果我不给出任何指令,Word 会识别该文件是 UTF8,但每次文件需要更新时都会弹出一个对话框要求我确认这一点,我想避免这种情况。

一个指令(\c Unicode),但不幸的是,使用它实际上并没有消除字符编码弹出窗口,即使 Unicode 文本以 BOM(字节Order Mark),Unicode 在任何情况下都不鼓励这样做。

所以虽然这回答了实际提出的问题,但并没有解决问题。根据对问题的评论中的讨论,以下任何一项也不会解决 OP 的问题,但它们可能会帮助其他人。

根据描述 .docx 文档的 ISO 29500 标准,INCLUDETEXT 应该有一个 \e 开关,可以让您指定编码。但是,根据 Microsoft 的标准文档 [MS-OI29500].pdf,Word 会忽略任何 \e 开关。

据我所知,当包含的文本为 Unicode 格式 (UTF-8) 时,避免弹出窗口的唯一方法是在 Windows 注册表中设置一个值,告诉 Word文本文件的默认编码。

问题在于该设置会影响 Word 打开的所有文本文件的情况,无论是通过文件打开对话框还是 INCLUDETEXT。

要创建设置,您需要导航到以下注册表位置,例如对于 Word 2016/2019 它将是

HKEY_CURRENT_USER\Software\Microsoft\Office.0\Word\Options

对于 Word 2010,它将是

HKEY_CURRENT_USER\Software\Microsoft\Office.0\Word\Options

然后添加一个名为 DefaultCPG 的 DWORD 值并将其值设置为您希望成为默认值的代码页。对于 UTF-8,这是十进制的 65001。

如果您可以控制要包含的文件的格式,则可以考虑使用不会触发编码弹出窗口的格式。这会导致另一组问题,例如如果您使用 HTML,您可能必须处理 HTML 特殊字符,例如 & 等、空格和 RTL 字符(Word 似乎反转)。但是下面的 HTML "framework" 足以插入一个没有额外段落标记等的文本块:

<html>
  <meta charset="UTF-8">
  <body>
    <a name="x">your text</a>
  </body>
</html>

在 INCLUDETEXT 字段中,然后使用 "x" 指示要包含的子集,例如

{INCLUDETEXT  "path\file.htm" x \c HTML}

HTML 编码 <a name="something"> 在 HTML 5 中已弃用,但 Word 仅理解较早的 HTML 约定。