Как связать и вставить текстовый файл в кодировке UTF8 в документ MS-Word? - PullRequest
0 голосов
/ 27 марта 2020

Я хотел бы включить содержимое текстового файла UTF8 в документ MS Word в качестве ссылки. Это работает для ANSI-кодированного файла с использованием поля:

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

Существует ли директива, схожая с \c ansitext для файлов UTF8? \c utf8 и \c utf8text не работают.

Если я не даю никаких указаний, Word распознает, что это файл UTF8, но появляется диалоговое окно, требующее подтверждения этого каждый раз, когда файл нуждается в этом. обновление, которого я хочу избежать.

1 Ответ

0 голосов
/ 06 апреля 2020

Там является директивой (\ c Unicode), но, к сожалению, ее использование фактически не устраняет всплывающее окно кодировки символов, даже когда текст Unicode начинается с BOM (Byte Order Mark), которые в любом случае не одобряются Unicode.

Так что, хотя это отвечает на фактически заданный вопрос, это не решает проблему. Также, согласно обсуждению в комментариях к Вопросу, ни одно из следующего не решит проблему для OP, но они могут помочь другим.

В соответствии со стандартом ISO 29500, который описывает документы .docx, 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 специальными символами, такими как & et c., Пробелами и символами 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.

...