html - 将 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 中的输出和预览如下所示:
您可以看到拉丁字符被正常处理。
我进行了一些搜索,发现有些人在处理 PDF 文件时遇到了与西里尔符号类似的问题。所以尝试在命令行中添加类似的参数,如下所示:
-V mainfont='My Font' -V lang -V babel-lang=russian
然而,它没有用。
我还在这里使用相同的 HTML 源尝试了 pandoc 的在线版本,由于某种原因,它转换得很好。
从 md 转换为 adoc 时,我得到了相同的结果。
从命令提示符使用 pandoc 将 HTML/MD 转换为 AsciiDoc 时,我需要正确显示西里尔字符。我怎样才能做到这一点?
解决方案
Pandoc 产生 UTF-8 编码输出,而 Windows 默认使用 UTF-16。问题源于使用重定向将输出通过管道传输到文件,因为新文件将使用 UTF-16 写入。-o file.adoc
因此,解决方案是让 pandoc 通过(或)命令行选项将输出写入文件--output file.adoc
,从而确保文件也具有 UTF-8 编码。
推荐阅读
- r - 在 r 中每 3 小时对一组数据进行排序
- python - 为什么 PyCharm 通过两种不同的方法突出显示相同的检查违规(类型检查器)?
- c++ - 从执行 boost::fibers 中排除一个线程
- excel - 将文件从一个工作表复制并粘贴到另一个工作表时出现 VBA 错误 1004“应用程序定义或对象定义错误”
- r - 如何正确地将转换后的变量添加到 ggplot 轴
- magnolia - Magnolia 6.0 获取端点中的当前节点
- swift - 如何快速将一个应用程序的文本字段数据发送到另一个应用程序
- angular - 用于替换 emoji-mart 表情符号的角管
- sql-server - 在混合值表上查询 SQL Server 中 XML 中的值选择
- python - Python 类和对象属性错误:对象没有属性