如何 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 约定。
我想将 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 约定。