python中理解编码

ASCII 美国信息交换标准码 (American Standard Code for Information Interchange)

字符编码后(十进制)
a97
A65
048

Unicode  万国码   一个字符 占4个字节  32bit位  

UTF-8  是针对Unicode的一种可变长度字符编码  对中文字符 一个字符占3个字节 24bit位

GBK  中国的 国标码  一个字符 占2个字节

python3 中的数据类型  布尔 bool 

          整型int  浮点型 float  复数complex (long型是python2中的)

                                     列表list  元组 tuple 字典dict   集合set

           字符串str  字节型bytes

python  对str类型的数据 在内存中统一存储为unicode编码形式

pycharm 软件编辑界面下  默认使用utf-8 进行了编码转换 展示到屏幕

python中理解编码

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
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("-------------------------")

相关推荐