【发布时间】:2018-11-28 09:46:22
【问题描述】:
我有一个 Python 程序,它是用 UTF-8 编写的,由 PyCharm 和 Sublime Text 确认。它将井号字符£ (0xC2 0xA3) 打印到重新结构化的文本中:
使用 PyCharm 和 Sublime Text 打开 reStructured Text 文件看起来不错,并且都声称它是 UTF-8。
当我使用rst2html5从这个文件中生成HTML时,问题就出现了:
rst2html5 --input-encoding=utf-8 --output-encoding=utf-8 foo.rst > foo.html
HTML 通过<meta charset="utf-8" /> 声称是UTF-8,但井号字符£ 现在显示为┬ú。在 Sublime Tex 中以 UTF-8 格式打开它也会显示 ┬ú 而不是 £。这是实际数据:
任何想法发生了什么或如何阻止它?这看起来像 UTF-8 吗?
生成的文件是这样开始的:
0xFF 0xFE 让我想起了UTF-16 BOM,但将标头设置为 <meta charset="utf-16" /> 并不能解决问题,并且告诉文本编辑器以 UTF-16 格式打开文件仍然显示非 ASCII 字符损坏。
如果相关,我的活动 Windows 代码页是 437。
【问题讨论】:
-
“要求”但不是吗?还是真的?用于编码 £ 字符的十六进制字节是什么?在 UTF-8 中,应该是 0xC2 0xA3。
-
您是在本地查看 HTML 文件吗?它是否具有标识其编码的
http-equiv标头?如果您从 Web 服务器查看它,服务器附加了哪些标头? -
@tripleee:我知道字体会对不常见的字符产生影响,但几乎每种字体,当然每种默认字体都包含井号字符。
-
@tripleee:我阅读了该页面。你要求十六进制表示,我明白了。我仍然没有看到你关于字体的观点。当我将 utf-8 指定为输入和输出时,rst2html5 遇到
0xC2 0xA3时没有输出0xC2 0xA3,并且字体在那里无效。 -
@AKX
2C25FA00仍然远未达到 UTF-16 中 £ 的正确编码,因此即使这样也无济于事。
标签: python windows powershell character-encoding