【发布时间】:2014-10-21 22:01:03
【问题描述】:
将 SublimeText 2.0.2 与 Python 3.4.2 一起使用,我得到一个带有 urllib 的网页:
response = urllib.request.urlopen(req)
pagehtml = response.read()
打印 => qualit\xe9">\r\n\t\t<META HTTP
我在 unicode 字符串中得到一个“\xe9”字符!
pagehtml 的标题告诉我它是用 ISO-8859-1 编码的
(Content-Type: text/html;charset=ISO-8859-1)。但是如果我用 ISO-8859-1 解码然后用 utf-8 编码,它只会变得更糟......
resultat = pagehtml.decode('ISO-8859-1').encode('utf-8')
打印 => qualit\xc3\xa9">\r\n\t\t<META HTTP
如何将所有 "\xe9"... 字符替换为对应的字母 ("é"...)?
编辑 1
我收到了UnicodeEncodeError(这就是我使用“utf-8”编码的原因)!
我应该提到我在 SublimeText 2.0.2 中运行我的代码。这似乎是我的问题。
编辑 2
它在 IDLE (Python 3.4.2) 和 OSX 终端 (Python 2.5) 中运行良好,但在 SublimeText 2.0.2 (使用 Python 3.4.2) 中不起作用... => 这似乎是一个SublimeText 控制台问题(输出窗口)而不是我的代码。
按照 J.F. Sebastian 的建议,我将查看 PYTHONIOENCODING env
看来我应该可以在sublime-build file 中设置它。
编辑 3 - 解决方案
我刚刚在sublime-build file 中添加了"env": {"PYTHONIOENCODING": "UTF-8"}。
完成。谢谢大家;-)
【问题讨论】:
-
你是怎么打印的?
-
无关:
response.headers.get_content_charset()返回 Content-Type HTTP 标头中指定的字符编码。 -
你使用的是什么版本的 Sublime Text?
-
@MattDMo。崇高文本 2.0.2。我得到了解决方案。谢谢(请参阅帖子中的编辑)
-
sublime 构建文件的位置在哪里?
标签: macos python-3.x unicode character-encoding sublimetext