微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我有一个用俄语编写的 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

转换顺利,产生了输出,但输出支持拉丁字符。所有的西里尔字符看起来都像 mumbo jumbo。 IntelliJ Idea 中的输出和预览如下所示:

preview in IntelliJ Idea

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

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

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

然而,它没有用。

我还尝试了使用相同 HTML 源代码的在线版 pandoc here,由于某种原因,它转换得很好。

pandoc online

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

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

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。