liusarazhang 2020-05-01
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
字符串str 字节型bytes
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
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("-------------------------")
1. 首先,我得知道这个文件具体采用的是什么样的编码,如果是ISO-8859我将会把它转成UTF-8,其他的ASCII这些都先不做处理,这里可以使用file filename或者是enca iconv