注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

风雨启示录

欢迎光临我的网店优优我心:http://uumyheart.taobao.com

 
 
 

日志

 
 

Python:encode和decode的问题  

2010-04-29 20:18:15|  分类: python学习笔记 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
python编程时,当你碰到这样的错误时:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xce in position 0: ordinal not in range(128)
这大部分原因是编码的问题,那么请看看下面的内容,或许对你有帮助。
首先需要了解Python中有两种字符串(严格地说,似乎不能这么叫)。一种是普通的str对象(每个字符用8bits表示),另一种是unicode字符串,它们可以相互转换
  1. >>> a = "我"   
  2. >>> b = unicode(a,"gb2312")   
  3. >>> a.__class__   
  4. <type 'str'>   
  5. >>> b.__class__   
  6. <type 'unicode'>   
  • >>> a   
  • '\xce\xd2'   
  • >>> b   
  • u'\u6211'  
  • 变量a是两个字符,b是一个unicode字符。
    那么什么情况用encode,什么情况又是decode呢:
    其实各种本地字符集的英文名是Coded Character Set,要转换为Coded,肯定是要encode了,同样,从里面解出来也应该叫decode……
    decode就是把其他编码转换为unicode,等同于unicode函数;encode就是把unicode编码的字符串转换为特定编码。在pyshell里继续:
    a是Str类型的,所以再用encode会报错。用print输出时会调用默认编码转换为系统编码
    b是unicode类型,打印时需要先encode(编码)成系统编码
    总而言之:
    当为字符串内型时,不能使用encode,可以使用decode转化成unicode内型
    串口发送时,需将unicode型,转化成str型,使用encode("gb2312")
     
     
     
     
     
      评论这张
     
    阅读(2628)| 评论(0)
    推荐 转载

    历史上的今天

    评论

    <#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    页脚

    网易公司版权所有 ©1997-2017