首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python2.6支持cStringIO unicode?

Python2.6支持cStringIO unicode?
EN

Stack Overflow用户
提问于 2012-10-09 13:28:41
回答 1查看 1.6K关注 0票数 4

我使用python模块从不同的网页下载内容。由于我还想支持潜在的unicode文本,所以我一直在避免使用cStringIO.StringIO函数,根据python:cStringIO -更快版本的StringIO

与StringIO模块不同,该模块无法接受不能编码为普通ASCII字符串的Unicode字符串。

..。不支持unicode字符串。实际上,它声明它不支持不能转换为ASCII字符串的unicode字符串。有人能向我澄清这件事吗?哪些可以转换,哪些不能转换?

我已经用以下代码进行了测试,并且它似乎在unicode中运行得很好:

代码语言:javascript
复制
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,需要坚持这个版本

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-09 13:32:46

任何只使用ASCII码点(字节值00-7F十六进制)的文本都可以转换为ASCII。基本上,任何使用美国英语中不常使用的字符的文本都不是ASCII。

在示例代码中,您没有将输入转换为Unicode文本,而是将其视为未解码的字节。所讨论的测试页是用UTF-8编码的,您永远不会将其解码为Unicode。

如果要将值解码为Unicode字符串,则无法将该字符串存储在cStringIO对象中。

您可能需要阅读Unicode和文本编码(如ASCII和UTF-8 )之间的区别。我可以建议:

  • 乔尔·斯波斯基的最小Unicode项目
  • Python Unicode HOWTO
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12801166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档