我使用markdown文件来编译我可以使用git存档的网络书签列表。我使用markdown_py将降价文档转换为html,因为我喜欢table of content extension。
我有时使用重音字符,我的源文件编码为utf-8,所以它不应该是一个问题,但输出是垃圾。 例如,如果我运行
echo "é & à" | markdown_py -e utf-8 > output.html
我在output.html
中看到了这一点答案 0 :(得分:2)
您需要告诉浏览器输出正在使用哪种编码。
Markdown仅输出HTML片段,而不是整个文档。当浏览器只接收HTML片段时,它需要猜测丢失的片段并且似乎猜错了。将输出包装在适当的标签中,确保包含定义编码的元标记。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Page Title</title>
</head>
<body>
{{ Markdown output goes here }}
</body>
</html>
Python-Markdown不可能输出HTML片段以外的任何内容。 feature request被拒绝,但有以下解释:
Markdown生成一个(X)HTML片段。它从来没有打算做更多的事情。如果您想要一个完整的HTML文档,那么您有责任将其包装起来。这是原始Markdown实现从一开始就的行为,我们反映它无意改变。
可以在功能请求的讨论中找到更多详细信息。简而言之,这是大多数Markdown实现的正常预期行为。要添加这样的功能,需要该工具不仅仅是Markdown解析器,而不是。对于简单的任务,快速shell脚本可以为您提供服务。对于更复杂的作业,静态站点生成器是更合适的工具。
项目文档没有直接解决这个问题。但是它会将first goal列为:
维护Python 2和Python 3库...作为跟踪syntax rules的markdown解析器的实现以及原始(markdown.pl)实现的行为尽可能合理。
实际上,这方面的行为与参考实现(markdown.pl)完全相同。由于Python-Markdown的文档仅涵盖了如何使用库和行为差异,因此没有讨论行为相同的功能。
为您提供基本功能的简单bash脚本可能是:
#!/bin/bash
echo "<!DOCTYPE html>
<html>
<head>
<meta charset=\"UTF-8\">
</head>
<body>"
python -m markdown "$@"
echo "
</body>
</html>"
上面假设stdout(如果你将输出文件名传递给Markdown会失败)并将所有参数传递给Markdown。如果您将脚本命名为md2html
(并且赋予了可执行权限:chmod +x md2html
),那么您可以像这样运行它:
$ echo "é & à" | md2html -e utf-8 > output.html
$ cat output.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<p>é & à</p>
</body>
</html>