Peter Piper利用Python程序 - 丢失了所有unicode字符吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (27)

我有一个Python脚本,用来加载一个网页urllib2.urlopen,做了一些各种魔术,并用结果吐出结果print。然后,我们在Windows上运行该程序,如下所示:

python program.py > output.htm

这是问题:

经过进一步调查,我发现即使Web服务器吐出了UTF8数据,该output.htm文件也使用ISO-8859-1字符集编码。

我的问题:

  1. 当您将Python程序重定向到Windows上的输出文件时,它是否始终使用此字符集?
  2. 如果是这样,有什么方法可以改变这种行为?
  3. 如果没有,是否有解决方法?我想我可以传入output.htm一个命令行参数并写入该文件而不是屏幕,但是我必须在我的程序中重做一大堆逻辑。

更新:

output.htm我的顶部添加:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
提问于
用户回答回答于

从你的意见和问题更新看来,数据正确编码为UTF-8。这意味着您只需通过向HTML文档添加编码信息就可以通过使用BOM或更好的方式告诉浏览器它是UTF-8:

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
用户回答回答于

用于输出到管道的默认编码。在我的机器上:

In [5]: sys.getdefaultencoding()
Out[5]: 'ascii'

 
import sys
try:
    sys.setappdefaultencoding('utf-8')
except:
    sys = reload(sys)
    sys.setdefaultencoding('utf-8')

扫码关注云+社区

领取腾讯云代金券