我使用python模块从不同的网页下载内容。由于我还想支持潜在的unicode文本,所以我一直在避免使用cStringIO.StringIO函数,根据python:cStringIO -更快版本的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在哪里失败了?我有什么理由不使用它吗?
注意:我正在使用Python2.6,需要坚持这个版本
发布于 2012-10-09 13:32:46
任何只使用ASCII码点(字节值00-7F十六进制)的文本都可以转换为ASCII。基本上,任何使用美国英语中不常使用的字符的文本都不是ASCII。
在示例代码中,您没有将输入转换为Unicode文本,而是将其视为未解码的字节。所讨论的测试页是用UTF-8编码的,您永远不会将其解码为Unicode。
如果要将值解码为Unicode字符串,则无法将该字符串存储在cStringIO对象中。
您可能需要阅读Unicode和文本编码(如ASCII和UTF-8 )之间的区别。我可以建议:
https://stackoverflow.com/questions/12801166
复制相似问题