我正在使用 python pycurl 模块从各种网页下载内容。因为我还想支持潜在的 unicode 文本,所以我一直在避免使用 cStringIO.StringIO 函数,根据 python 文档:cStringIO - Faster version of StringIO
与 StringIO 模块不同,该模块不能接受无法编码为纯 ASCII 字符串的 Unicode 字符串。
... 不支持 unicode 字符串。实际上它声明它不支持无法转换为 ASCII 字符串的 unicode 字符串。有人可以向我澄清一下吗?哪些可以转换,哪些不能转换?
我已经使用以下代码进行了测试,它似乎与 unicode 一起工作得很好:
import pycurl
import cStringIO
downloadedContent = cStringIO.StringIO()
curlHandle = pycurl.Curl()
curlHandle.setopt(pycurl.WRITEFUNCTION, downloadedContent.write)
curlHandle.setopt(pycurl.URL, 'http://www.ltg.ed.ac.uk/~richard/unicode-sample.html')
curlHandle.perform()
content = downloadedContent.getvalue()
fileHandle = open('unicode-test.txt','w')
for char in content:
fileHandle.write(char)
并且文件被正确写入。我什至可以在控制台中打印全部内容,所有字符都显示得很好......所以我很困惑的是,cStringIO 失败在哪里?有什么理由我不应该使用它吗?
[注意:我使用的是 Python 2.6,需要坚持这个版本]