0

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

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

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

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

4

1 回答 1

0

有一个指令( \c Unicode ),但不幸的,使用它实际上并不能消除字符编码弹出窗口,即使 Unicode 文本以 BOM(字节顺序标记)开头,无论如何 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\16.0\Word\Options

对于 Word 2010,它将是

HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Word\Options

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

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

<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 约定。

于 2020-04-06T11:35:47.617 回答