为什么rst2html5弄乱了编码?

时间:2018-11-28 09:46:23

标签: python windows powershell character-encoding rst2html5

我有一个用UTF-8编写的Python程序,经PyCharm和Sublime Text确认。它将井字号£0xC2 0xA3)打印到重新构造的文本中:

enter image description here

使用PyCharm和Sublime Text打开重构的文本文件看起来不错,并且都声称它是UTF-8。

当我使用rst2html5通过以下命令从该文件中生成HTML时,就会出现问题:

 rst2html5 --input-encoding=utf-8 --output-encoding=utf-8 foo.rst > foo.html

通过<meta charset="utf-8" />,HTML声明为UTF-8,但是井号£现在显示为┬ú。在Sublime Tex中以UTF-8格式打开时,也会显示┬ú而不是£。这是实际数据:

enter image description here

任何想法怎么回事或如何阻止它?看起来完全像UTF-8吗?

生成的文件开始如下:

enter image description here

0xFF 0xFE使我想起UTF-16 BOM,但是将标头设置为<meta charset="utf-16" />并不能解决问题,并且告诉文本编辑器打开文件,因为UTF-16仍然显示非ASCII字符损坏。

如果相关,我的活动Windows代码页是437。

1 个答案:

答案 0 :(得分:0)

问题是由PowerShell重定向而不是rst2html5本身引起的。像这样运行它:

 rst2html5 --input-encoding=utf-8 --output-encoding=utf-8 foo.rst foo.html

具有与重定向(>)相同的效果,并且在CMD上使用重定向也很好。

如果有人对PowerShell为什么会弄乱编码的更多信息,最好在此处添加。