python中理解编码
Posted CherryYang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中理解编码相关的知识,希望对你有一定的参考价值。
ASCII 美国信息交换标准码 (American Standard Code for Information Interchange)
字符 | 编码后(十进制) |
a | 97 |
A | 65 |
0 | 48 |
Unicode 万国码 一个字符 占4个字节 32bit位
UTF-8 是针对Unicode的一种可变长度字符编码 对中文字符 一个字符占3个字节 24bit位
GBK 中国的 国标码 一个字符 占2个字节
python3 中的数据类型 布尔 bool
整型int 浮点型 float 复数complex (long型是python2中的)
列表list 元组 tuple 字典dict 集合set 冻结集合 frozenset
字符串str 字节型bytes 字节数组 bytearray
python 对str类型的数据 在内存中统一存储为unicode编码形式
pycharm 软件编辑界面下 默认使用utf-8 进行了编码转换 展示到屏幕
s1 = \'CH\' # str类型的变量s1,接收两个英文字符,在内存中以unicode编码存储下来 b1 = bytes(\'CH\', "utf-8") # bytes类型的变量b1,接收bytes类型字符串,在内存中以utf-8编码存储下来 b2 = b\'CH\' print(s1) # 打印后 表现形式为 CH 其编码方式为unicode print(b1) # 打印后 表现形式为 b\'CH\' 其编码方式为 utf-8 print(b2) # 打印后 表现形式为 b\'CH\' 其编码方式为 utf-8 s2 = \'中国\' # str类型的变量s2,接收两个两个中文字符,在内存中以unicode编码存储下来 b2 = bytes(\'中国\', "utf-8") # 内置函数bytes()的作用 本质是对字符进行unicode编码到其它编码的转换编码 b3 = s2.encode("utf-8") # b4 = b\'中国\' # python3不支持 python2可以? print(s2) # 打印后 表现形式为 中国 其编码方式为unicode print(b2) # 打印后 表现形式为 b\'\\xe4\\xb8\\xad\\xe5\\x9b\\xbd\' 其编码方式为 utf-8 print(b3) # 打印后 表现形式为 b\'\\xe4\\xb8\\xad\\xe5\\x9b\\xbd\' 其编码方式为 utf-8
s1 = "abc" print(s1.encode("utf-8")) # unicode编码 --> ust-8编码 s2 = "中国" print(s2.encode("utf-8")) # unicode编码 --> ust-8编码 b = b\'abc\' s3 = b.decode("utf-8") # ust-8编码 --> unicode编码 print(s3) b = b\'\\xe4\\xb8\\xad\\xe5\\x9b\\xbd\' s4 = b.decode("utf-8") # ust-8编码 --> unicode编码 print(s4)
s = \'alex\' print("str类型:", s) b1 = bytes(s, encoding=\'utf-8\') # 针对unicode编码的str类型的字符串,在内存中生成新的 utf-8编码的 bytes类型的字符串 print("bytes类型:", b1) # b1[0] = 65 # TypeError: \'bytes\' object does not support item assignment b2 = bytearray(s, encoding=\'utf-8\') print("改动前:", b2) b2[0] = 65 # 可以将每个字节当成元素item,逐个改动, 即对内存中的内容按字节直接改变,内存中没有新增占用 print("改动后:", b2) print("------------分割线-------------") s1 = \'alex\' print("原字符串", s1) print("内存地址", id(s1)) s2 = s1.replace(\'a\', \'A\') # 为实现改变,内存中 原字符串 + 新生成字符串 print("原字符串无变化", s1) print("得到新字符串", s2) print("内存地址", id(s2)) print("-------------------------")
以上是关于python中理解编码的主要内容,如果未能解决你的问题,请参考以下文章