博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python知识点-py2和py3编码
阅读量:6578 次
发布时间:2019-06-24

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

编码 大小 支持语言
ASCII 1个字节 英文
Unicode 2个字节(生僻字4个) 所有语言
UTF-8 1-6个字节,英文字母1个字节,汉字3个字节,生僻字4-6个字节 所有语言

py2编码:包含2种类型str和unicode, str相当于bytes, unicode 相当于str 

python 2默认编码为ASCII,所以出现中文时会出现报错,那是一位ASCII没有包括中文。

# 解决方法一:import sysreload(sys)sys.setdefaultencoding('utf-8')# 解决方法二:#coding:utf8# 解决方法三:#-*- coding:utf-8 -*-

 

str是unicode这个字符串经过编码(utf8,gbk等)后的字节组成的序列,unicode才是真正意义上的字符串

#str格式>>> a='高兴'>>> a'\xe9\xab\x98\xe5\x85\xb4'#unicode>>> a=u'高兴'>>> au'\u9ad8\u5174'
#Python 2 悄悄掩盖掉了 byte 到 unicode 的转换,让程序在处理 ASCII 的时候更加简单>>> print(u'nihao'+'gaoxing')nihaogaoxing#在处理非ASSII内的字符相加时,会出现UnicodeDecodeError>>> print(u'nihao'+'高兴')Traceback (most recent call last):  File "
", line 1, in
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)

 

unicode 和str 转换,

 

py3编码:包含str和byte , “str” 类型存储的是一个 unicode, “bytes” 类型存储的是 byte,也可以通过一个 b 前缀来制造 byte 

python 3默认编码为UTF-8

Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别清晰。你不能拼接字符串和字节包,

 

py3时:

a="中国" 和a=u"中国" 是一个意思,都表示str类型unicode存储类型
c=b"good" 表示str类型bytes存储类型
py2时:
a="中国" 和a=b"中国"  是一个意思,表示str类型bytes存储类型
a=u"中国"  表示str类型unicode存储类型

转载于:https://www.cnblogs.com/ghx1/p/10138614.html

你可能感兴趣的文章
JS -------------------设置弹出框位置屏幕的中间
查看>>
几个内核有关的命令
查看>>
第一章 大网 GNS3 使用
查看>>
性能测试 vbs使用(一)
查看>>
46Exchange 2010升级到Exchange 2013-移除总部CAS2010
查看>>
1.2 linux哲学思想
查看>>
Android机子屏幕适配最简单最全面方案
查看>>
spring拦截器中的事务管理
查看>>
有信网络电话被KC网络电话收购了吗?
查看>>
Java 解析 python使用 pickle序列化后的数据
查看>>
Redis 列表(List)
查看>>
爬虫爬取的网易云热门歌单
查看>>
maxwell的使用--日志增量订阅&消费
查看>>
【示例教程】如何使用LEADTOOLS 的JAVA接口从护照中识别和提取数据
查看>>
关于studio升级 部分报错 查找原因的方法--个人总结
查看>>
Java通信编程 Java Scoket
查看>>
简单对比WDCP与宝塔面板WEB环境区别与选择建议
查看>>
PostgreSQL全文检索简介
查看>>
Canvas学习:globalCompositeOperation详解
查看>>
C语言轻松高效学习方法之:多种方法实现
查看>>