各种编码在内存中所占的大小:

ascii:    英文:8bit (1B)

uft-:    英文:8bit (1B)
中文:24bit (3B) GBK: 英文:8bit (1B)
中文:16bit (2B) unicode: 英文:32bit (4B)
中文:32bit (4B)

python3代码执行过程:

  1. 解释器找到代码文件(文件以utf8/GBK..存储),
  2. 把代码字符串按文件头定义的编码进行解码到内存,转成unicode
  3. 所有的变量字符都会以unicode编码声明(str的编码方式就是unicode)

unicode只在内存中进行显示, 传输和存储需要用到utf8/GBK.., 所以必须转成utf8/GBK..

str和bytes的区别就是编码方式的不同:

 str(unicode编码)      ==>     bytes(utf8/GBK..)       ==>         存储, 传输
bytes = str.encode('utf-8') # 编码
str = bytes.decode('utf-8') # 解码

python3中str和bytes表现和编码:

 英文:
str: 表现方式==>'a'
编码方式==>0101 unicode bytes: 表现方式==>b'a'
编码方式==>0101 utf8/GBK.. 中文:
str: 表现方式==>'中'
编码方式==>0101 unicode bytes: 表现方式==>b'x\e9'
编码方式==>0101 utf8/GBK..

在python2中:

  1. u'xxx'为unicode对象, 就是python3中的str
  2. bytes和str是同一个类型
 s = 'a'
print (s, type(s)) # 'a', <type 'str'> s = u'中文'
print(s, type(s)) # u'\u4e2d\u6587', <type 'unicode'>
# 编码变成utf-8, 一个中文三个字节
s1 = s.encode('utf-8')
print(s1, type(s1)) # '\xe4\xb8\xad\xe6\x96\x87', <type 'str'> # bytes和str是同一个类型
s1 = 'a'
s2 = bytes('a')
print(s1 is s2) # True

python中编码问题的更多相关文章

  1. bytes类型和python中编码的转换方法

    一.bytes类型 bytes类型是指一堆字节的集合,在python中以b开头的字符串都是bytes类型.例如: >>> a = "中国" >>> ...

  2. Python中编码的详细讲解

    看这篇文章前,你应该已经知道了为什么有编码,以及编码的种类情况 ASCII 占1个字节,只支持英文 GB2312 占2个字节,支持6700+汉字 GBK GB2312的升级版,支持21000+汉字 S ...

  3. Python中编码和字符串

    编码和字符串 编码 在学习回顾中总结一下ASCII编码.Unicode编码和utf-8编码. 计算机中只能处理数字,我们若要处理文本的话就要将文件转换为数字.所以,这就涉及该怎样转换的问题,也就是编码 ...

  4. 理解Python中编码的应用

    完全理解字符编码 与 Python 的渊源前,我们有必要把一些基础概念弄清楚,虽然有些概念我们每天都在接触甚至在使用它,但并不一定真正理解它.比如:字节.字符.字符集.字符码.字符编码. 字节 字节( ...

  5. Python中编码问题:u'\xe6\x97\xa0\xe5\x90\x8d' 类型的转为utf-8的解决办法

    相信小伙伴们遇到过类似这样的问题,python2中各种头疼的转码,类似u'\xe6\x97\xa0\xe5\x90\x8d' 的编码,直接s.decode()是无法解决编码问题.尝试了无数办法,都无法 ...

  6. Python中编码问题:u'\xe6\x97\xa0\xe5\x90\x8d' 类型和 ‘\u559c\u6b22\u4e00\u4e2a\u4eba ’ 转为utf-8的解决办法

    相信小伙伴们遇到过类似这样的问题,python2中各种头疼的转码,类似u'\xe6\x97\xa0\xe5\x90\x8d' 的编码,直接s.decode()是无法解决编码问题.尝试了无数办法,都无法 ...

  7. Python中编码问题?

    一.键盘输入 raw_input('请输入:'.decode('utf-8').encode('gbk'))raw_input(unicode('请输入:','utf-8').encode('gbk' ...

  8. python中编码判断

    https://www.cnblogs.com/lc-D-a/p/6074878.html python3 用isinstance()检查unicode编码报错

  9. Python中编码encode()与解码decode()

    1 print('这是编码'.encode('utf-8')) # 结果 b'\xe8\xbf\x99\xe6\x98\xaf\xe7\xbc\x96\xe7\xa0\x81' 2 print('这是 ...

随机推荐

  1. MySQL InnoDB Engine--数据预热

    ##========================================##在MySQL 5.7版本中引入将Innodb Buffer中数据备份和回复的新特性,具体原理时将Buffer p ...

  2. 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和

    例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19. 思路:我们可以先将整数的每一个数字取出来,每次取个位数字,取完后退位(将数字除以10),在取个位数字,依次取出所有的数 ...

  3. linux之 sed命令

    1. Sed简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区 ...

  4. 新版vue-cli输入本地ip不能访问,只能用localhost才可以访问?

    问:新版vue-cli输入本地ip不能访问,只能用localhost才可以访问? 答:修改config/index.js配置,将host: 'localhost',改为host: '0.0.0.0', ...

  5. eclipse卡死在search for main types 20 files to index

    run as application时,提示search for main types  20 files to index (*/*/*.jar)某个maven依赖jar出了问题,找不到main方法 ...

  6. org.apache.ibatis.binding.BindingException: Invalid bound statement

    idea中出现了这个问题 我的解决方案是: 把mapper映射文件放到资源目录下 然后就行了. 当然,这个具体原因就是:mapper.xml和接口对不上引起的,具体问题还要具体解决 协助博客:http ...

  7. PHP代码实现3 [函数角度]

    内部函数 标准函数的实现存放在ext/standard扩展目录中. php函数种类 Zend engine中的function的存在形式 123456 struct _zend_execute_dat ...

  8. 浅析Hyperledger Fabric共识算法 摘自http://www.cocoachina.com/blockchain/20180829/24728.html

    Hyperledger Fabric共识算法 区块链系统是一个分布式架构,交易账本信息由各个节点管理,组成一个庞大的分布式账本.在分布式系统中,各个节点收到的交易信息的顺序可能存在差异(例如,网络延迟 ...

  9. Jquery模板-----JsRender

    重新排版与堂堂88 先看下简单示例: <script type="type='text/html'" id="jianren"> <div c ...

  10. Hard commits, soft commits and transaction logs

    “Hard commits are about durability, soft commits are about visibility“  Transaction Logs 首先介绍下solrcl ...