博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python2与python3的bytes问题
阅读量:5874 次
发布时间:2019-06-19

本文共 930 字,大约阅读时间需要 3 分钟。

>>> s  = '编程'>>> print s编程>>> s'\xe7\xbc\x96\xe7\xa8\x8b'>>>

在python2中直接调用字符串的变量的话,会打印其bytes(可以理解成用16进制表示字符串的内存地址,本质还是二进制)。在python2中,bytes和str是一回事。

为什么要有个bytes呢?。因为所有数据本质都是用二进制进行储存的,当传输数据的时候,要把这些数据先转换成二进制( bytes)在进行传输。除此之外,python2里还有个单独的数据类型,把字符串解码后,就会变成unicode。

>>> s'\xe8\xb7\xaf\xe9\xa3\x9e' #utf-8>>> s.decode('utf-8')u'\u8def\u98de' #unicode 在unicode编码表里对应的位置>>> print(s.decode('utf-8'))路飞 #unicode 格式的字符

原因是python2的默认编码是ASCII,后来为了支持多国语言,就想弄个unicode。但是直接把ASCII转成unicode是很费劲的,所以龟叔直接搞了一个新的字符类型,就叫unicode,说白了就是你得在内存里先把字符串存成unicode类型

 

2008年python3出世,来了个大变革:

  1. 把字符串的编码变成了unicode,文件默认编码变成了utf-8。
  2.  把str 和bytes 做了明确区分, str 就是unicode格式的字符, bytes就是单纯二进制

还有一个很重要的是,在python3中,只有unicode给你展示字形,其他的编码一律用bytes展示,也就是说要你强制使用unicode。

 

最后再提示一下,Python只要出现各种编码问题,无非是哪里的编码设置出错了
常见编码错误的原因有:

      • Python解释器的默认编码
      • Python源文件文件编码
      • Terminal使用的编码
      • 操作系统的语言设置

 

参考:https://www.cnblogs.com/alex3714/articles/7550940.html

转载于:https://www.cnblogs.com/lshedward/p/9926150.html

你可能感兴趣的文章
gdb调试命令
查看>>
ASP.NET 网站部署 Part.1(安装IIS、复制文件部署网站)
查看>>
怎样才能当上项目经理?(转)
查看>>
消息、接收-关于Erlang Socket的三种消息接收模式-by小雨
查看>>
文件配置IBM Ration Rhapsody 软件的环境配置
查看>>
蛇形填数
查看>>
PostgreSQL在何处处理 sql查询之五十九
查看>>
T-SQL查询进阶--深入浅出视图
查看>>
iOS 如何创建单例对象
查看>>
skype msnLite 静态路由
查看>>
Hibernate原理
查看>>
SlidingMenu+Fragment实现当前最流行的侧滑
查看>>
我是如何写作一本软件+哲学式的书籍的(下)
查看>>
Spring——AOP配置时的jar包异常
查看>>
HBase修改压缩格式及Snappy压缩实测分享
查看>>
Minimit Anima – 硬件加速的 CSS3 动画插件
查看>>
HDUOJ-------The Hardest Problem Ever
查看>>
学习嵌入式—导火线
查看>>
hdu 1217 Arbitrage (最小生成树)
查看>>
Bash Shell字符串操作小结
查看>>