首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Decode函数尝试对Python进行编码

Decode函数尝试对Python进行编码
EN

Stack Overflow用户
提问于 2011-01-26 07:14:45
回答 2查看 5.9K关注 0票数 7

我正在尝试打印一个没有特定编码十六进制的unicode字符串。我从facebook获取这个数据,它在UTF-8的html头中有一个编码类型。当我打印类型时-它说它是unicode的,但是当我尝试用unicode解码它时-转义告诉我有一个编码错误。当我使用decode方法时,为什么它会尝试编码?

代码

代码语言:javascript
复制
a='really long string of unicode html text that i wont reprint'
print type(a)
 >>> <type 'unicode'>   
print a.decode('unicode-escape')
 >>> Traceback (most recent call last):
  File "scfbp.py", line 203, in myFunctionPage
    print a.decode('unicode-escape')
UnicodeEncodeError: 'ascii' codec can't encode character u'\u20ac' in position 1945: ordinal not in range(128)
EN

回答 2

Stack Overflow用户

发布于 2011-01-26 07:20:38

当您打印到控制台时,Python尝试将字符串编码(转换)为您终端的字符集。如果这不是UTF-8,或者没有映射字符串中的所有字符,它将发出抱怨并抛出异常。

当我快速处理数据时,这经常会让我感到困惑,例如,其中包含土耳其字符。

如果你通过Windows命令提示符运行python.exe,你可以在这里找到一些解决方案:What encoding/code page is cmd.exe using。基本上,您可以使用chcp更改代码页,但它相当麻烦。我会跟随Mark's advice并使用类似IDLE的东西。

票数 3
EN

Stack Overflow用户

发布于 2011-01-26 19:48:19

代码语言:javascript
复制
>>> print type(a)
<type 'unicode'>
>>> a.decode('unicode-escape')

当我使用decode方法时,它为什么要尝试编码?

因为你解码成Unicode,然后你编码。您刚刚尝试将unicode字符串解码为unicode。然后,它所做的第一件事就是尝试使用ascii编解码器将其转换为字符串。这就是为什么你会得到:

代码语言:javascript
复制
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2110' in position 3: ordinal not in range(128)

记住: Unicode不是一种编码。其他的都是,比如ascii,utf8,拉丁语-1等等。

这种隐式编码在Python3中消失了,因为它混淆了人们。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4799917

复制
相关文章

相似问题

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