【发布时间】:2018-06-05 21:11:22
【问题描述】:
我正在尝试在 Windows 系统上使用 pandoc 将降价文件转换为 pdf。由于我的markdown包含中文字符,我使用以下命令生成pdf:
pandoc --pdf-engine=xelatex -V CJKmainfont=KaiTi test.md -o test.pdfbut
但是 pandoc 抱怨该文件包含无法处理的非 utf8 字符,确切的错误消息是:
生成 PDF 时出错。
!未定义的控制序列。
pandoc.exe:无法解码字节“\xae”:>Data.Text.Internal.Encoding.streamDecodeUtf8With:无效的 UTF-8 流
根据我在互联网上找到的内容。这主要是由于markdown文件的编码,可能与pandoc无关。我的文件包含很多汉字和英文字符。我已将其转换为 utf-8 编码。
我尝试过但没有成功的事情
非utf8字符的Grep
遵循指令here 和here。我已验证系统区域设置为 UTF-8,localectl status 的输出为:
System Locale: LANG=en_US.UTF-8
VC Keymap: us
X11 Layout: us
我尝试 grep 查找非 utf8 字符。使用的命令是grep -axv '.*' test.md。但是该命令什么也没输出。 (我认为这意味着没有无法被 utf-8 解码的无效字符。)
尝试丢弃无效字符
我按照指示 here 尝试从我的文件中删除非 utf8 字符。我使用的命令是:
iconv -f utf-8 -t utf-8 -c test.md > output.md
之后,当我尝试使用pandoc 将output.md 转换为pdf 时。我仍然遇到相同的错误消息,这表明该文件仍然包含非 utf8 字符。
我的问题
如何确定文件的哪一部分导致问题或如何真正从文件中删除非 utf8 字符,以便在编译时出错?
其他信息
可以找到markdown文件here。
如果您使用的是Linux系统,您可能需要将
CJKmainfont设置为您系统中其他有效的中文字体名称。
【问题讨论】:
-
grep $´\xbd' test.md应该向您显示违规行。如果它们很长,这也是为什么要换行的教训。 -
Stack Overflow 用于编程问题。这可能适合我们的姊妹网站Super User(但请查看他们的指南,并查找重复的问题)。
-
@tripleee 你给出的命令不起作用。
-
可能取决于语言环境等。
perl -ne 'print if /\xbd/' test.md或许那时;但实际上,请尝试建议的副本中的命令。
标签: bash unicode utf-8 character-encoding pandoc