Обработка кириллических символов в pandoc при конвертации HTML в ADOC

У меня есть файл HTML, написанный на русском языке, и я хочу преобразовать его в файл ADOC с помощью pandoc.

<!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 выглядят так:

предварительный просмотр в IntelliJ Idea

Вы можете видеть, что латинские символы обрабатываются нормально.

Я поискал и обнаружил, что некоторые люди испытывают подобные проблемы с кириллическими символами при обработке PDF-файлов. Итак, попробуйте добавить аналогичные параметры в командную строку следующим образом:

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

Однако это не сработало.

Я также попробовал онлайн-версию pandoc здесь с тем же исходным кодом HTML и для некоторых причина, он преобразовал просто отлично.

пандок онлайн

И я получаю тот же результат при преобразовании из md в adoc.

Мне нужно, чтобы символы кириллицы правильно отображались при преобразовании HTML/MD в AsciiDoc с помощью pandoc из командной строки. Как я могу этого добиться?


person Vladimir Markiev    schedule 07.05.2021    source источник
comment
Похоже проблема с кодировкой. Можете ли вы попробовать явно преобразовать входной файл в UTF-8, например, как описано здесь?   -  person tarleb    schedule 07.05.2021
comment
Кроме того, отправьте HTML-файл или его соответствующий фрагмент, чтобы мы могли попытаться воспроизвести проблему.   -  person tarleb    schedule 07.05.2021
comment
Спасибо за твою заботу! Явное преобразование в UTF-8 дает еще худший результат: s3.gifyu.com/images/image91792e0fa352ab6d.png Я добавил фрагмент к вопросу, но вы также можете найти исходный HTML здесь: we.tl/t-lGWwdCOMjf   -  person Vladimir Markiev    schedule 07.05.2021
comment
Кажется, теперь я понимаю, что происходит: Windows обычно использует по умолчанию UTF-16, поэтому, когда вы передаете вывод в файл, он будет в UTF-16. Попробуйте записать файл, передав -o output\file.adoc в pandoc — это должно гарантировать, что кодировка останется UTF-8.   -  person tarleb    schedule 07.05.2021
comment
Да, теперь это работает. Благодарю вас! Если вы опубликуете это как ответ, я приму его как решенный.   -  person Vladimir Markiev    schedule 07.05.2021


Ответы (1)


Pandoc производит вывод в кодировке UTF-8, в то время как Windows по умолчанию использует UTF-16. Проблема связана с использованием перенаправления для передачи вывода в файл, поскольку новый файл будет записан с использованием UTF-16. Поэтому решение состоит в том, чтобы разрешить pandoc записывать вывод в файл с помощью параметра командной строки -o file.adoc (или --output file.adoc), тем самым гарантируя, что файл также имеет кодировку UTF-8.

person tarleb    schedule 07.05.2021