将 HTML 转换为 ADOC 时 pandoc 中的西里尔符号处理

Cyrillic symbols processing in pandoc when converting HTML to ADOC

我有一个用俄语编写的 HTML 文件,我想使用 pandoc 将其转换为 ADOC 文件。

<!DOCTYPE html
  SYSTEM "about:legacy-compat">
<html lang="ru-ru"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="copyright" content="(C) Copyright 2021"><meta name="DC.rights.owner" content="(C) Copyright 2021"><meta name="DC.type" content="task"><meta name="DC.relation" scheme="URI" content="../topics/ManageEmployees.html"><meta name="prodname" content="Docsvision 5. Web-клиент"><meta name="prognum" content="5.5.16"><meta name="docver" content="1.0"><meta name="DC.format" content="HTML5"><meta name="DC.identifier" content="DeleteEmployee"><meta name="DC.language" content="ru-ru"><link rel="stylesheet" type="text/css" href="../commonltr.css"><title>Удаление сотрудника</title></head><body id="DeleteEmployee"><main role="main"><article role="article" aria-labelledby="ariaid-title1">

    <h1 class="title topictitle1" id="ariaid-title1">Удаление сотрудника</h1>
    <div class="body taskbody">
        
        <section><div class="li stepsection"><p class="p">Для удаления ранее созданного сотрудника:</p></div><ol class="ol steps"><li class="li step">
                <span class="ph cmd">В правой области справочника выберите сотрудника, которого необходимо
                    удалить.</span>
            </li><li class="li step">
                <span class="ph cmd">Вызовите контекстное меню на выбранном сотруднике.</span>
            </li><li class="li step">
                <span class="ph cmd">Выберите в контекстном меню пункт  <span class="keyword parmname">Удалить</span>.</span>
            </li><li class="li step">
                <span class="ph cmd">Появится предупреждение, подтвердите действие кнопкой
                        <span class="ph uicontrol">ОК</span>.</span>
            </li></ol></section>
        <section class="section result" id="DeleteEmployee__result_lv3_2pt_y4b">
            <div class="note note note_note"><span class="note__title">Прим.:</span> Сотрудник будет полностью удалён из справочника.</div>
        </section>
    </div>
<nav role="navigation" class="related-links"><div class="familylinks"><div class="parentlink"><strong>На уровень выше:</strong> <a class="link" href="../topics/ManageEmployees.html">Работа с сотрудниками</a></div></div></nav></article></main></body></html>

我正在使用以下命令:

pandoc --wrap=none -f html -t asciidoc .\topics\CreateDocumentCard.html > ..\output\file.adoc.

转换顺利,生成了输出,但输出仅支持拉丁字符。所有的西里尔字符看起来都像是胡言乱语。 IntelliJ Idea 中的输出和预览如下所示:

可以看到拉丁字符处理正常

我做了一些搜索,发现有些人在处理 PDF 文件时遇到与西里尔符号类似的问题。所以尝试像这样在命令行中添加类似的参数:

-V mainfont='My Font' -V lang -V babel-lang=russian

然而,它没有用。

我也试过使用相同 HTML 源的 pandoc here 在线版本,出于某种原因,它转换得很好。

从 md 转换为 adoc 时得到相同的结果。

在命令提示符下使用 pandoc 将 HTML/MD 转换为 AsciiDoc 时,我需要正确显示西里尔字符。我怎样才能做到这一点?

Pandoc 生成 UTF-8 编码输出,而 Windows 默认使用 UTF-16。问题源于使用重定向将输出通过管道传输到文件,因为新文件将使用 UTF-16 编写。因此,解决方案是让 pandoc 通过 -o file.adoc(或 --output file.adoc)命令行选项将输出写入文件,从而确保文件也具有 UTF-8 编码。