我有一个用UTF-8编写的Python程序,经PyCharm和Sublime Text确认。它将井字号£
(0xC2 0xA3
)打印到重新构造的文本中:
使用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格式打开时,也会显示┬ú
而不是£
。这是实际数据:
任何想法怎么回事或如何阻止它?看起来完全像UTF-8吗?
生成的文件开始如下:
0xFF 0xFE
使我想起UTF-16 BOM,但是将标头设置为<meta charset="utf-16" />
并不能解决问题,并且告诉文本编辑器打开文件,因为UTF-16仍然显示非ASCII字符损坏。
如果相关,我的活动Windows代码页是437。
答案 0 :(得分:0)
问题是由PowerShell重定向而不是rst2html5本身引起的。像这样运行它:
rst2html5 --input-encoding=utf-8 --output-encoding=utf-8 foo.rst foo.html
具有与重定向(>
)相同的效果,并且在CMD上使用重定向也很好。
如果有人对PowerShell为什么会弄乱编码的更多信息,最好在此处添加。