Python(2.6)cStringIO unicode支持?
我正在使用
python pycurl模块从各种网页下载内容.因为我也想支持潜在的unicode文本,所以我一直在避免使用cStringIO.StringIO函数,根据python docs:
cStringIO – Faster version of StringIO
…不支持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并且需要坚持这个版本] 解决方法
任何仅使用ASCII代码点(字节值00-7F十六进制)的文本都可以转换为ASCII.基本上任何使用美国英语中不常用的字符的文本都不是ASCII.
在您的示例代码中,您没有将输入转换为Unicode文本;你将它视为未解码的字节.有问题的测试页面以UTF-8编码,您永远不会将其解码为Unicode. 如果要将值解码为Unicode字符串,则无法将该字符串存储在cStringIO对象中. 您可能想要了解Unicode和文本编码(如ASCII和UTF-8)之间的区别.我可以推荐: > Joel Spolsky的minimum Unicode article (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |