【问题标题】:Can markdown2.py render as utf-8?markdown2.py 可以呈现为 utf-8 吗?
【发布时间】:2018-12-27 20:51:05
【问题描述】:

当使用markdown2.py 将 utf-8 编码的文本转换为 html 时,结果是 ASCII 编码的。如何告诉 markdown2 呈现 utf-8?

名为ff.md的示例输入文件:

Hallo, Bjørn Nößflögl

转换使用:

C:\Python37\python.exe C:\Python37\Scripts\markdown2.py ff.md

当我在编辑器 (Notepad++) 中打开结果时,它认为它是 ASCII。同样,当我使用flaskrender_template 渲染它时,它会在变音符号上崩溃。 (UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf8 in position 12: invalid start byte)

如果我使用 Notepad++ 手动转换为 utf-8,一切都很好。

浏览一下 markdown2 代码,我可以看到假定 read 为 utf-8 时的输入。所以我不明白为什么它没有这样渲染。

【问题讨论】:

  • @snakecharmerb 感谢您的建议,但是在控制台中首先 chcp 65001 然后转换文件仍将其呈现为 ASCII。 ö 变成 \xf6 (ASCII),而不是 '\xc3\xb6'。如果我厌倦了这种解决方法,我想我将不得不深入研究 markdown2.py。

标签: python utf-8 markdown


【解决方案1】:

TL;DR 将系统变量 PYTHONIOENCODING 设置为 utf-8。

说明:要在 Windows 10 中执行此操作,请按 Windows 键,输入 environment 并启动编辑您帐户的环境变量。单击新建并将Name of 设置为PYTHONIOENCODING 并将Value 设置为utf-8,注意不要加引号。节省。这样做将使 Windows 保留该设置。

Markdown2 代码中,这些行在我的例子中写入文件(Python 3)。

if py3:
    sys.stdout.write(html)

谷歌搜索“python sys.stdout.write utf8”将我带到this question on SOthis answer 将我带到了解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    相关资源
    最近更新 更多