字符串&字节串
一、串类型
1. 字符串
2. 字节串(二进制)(其他编码)
二、转换规则
1. 字符串—>字节串(encode)
2. 字节串—>字符串(decode)
三、python3环境中
字节串:bytes
字符串:str
转换规则:
bytes —> str :decode
str —> bytes : encode
四、python2环境中
字节串: str
字符串: unicode
转换规则:
str —> unicode :decode
unicode —> str : encode
五、使用
Step1: 确认python版本,选择python2 还是 python3
Step2: 确认数据类型
utf-8 & unicode
一、计算机 发明
美国人(发明),英国人(沿用)
二、如何表示一个字符串?
定义一个字符串集(一个字节,0-255)
* ascii 字符集*
十六进制 | 十进制 | 字符 |
---|---|---|
0110 0001 | 97 | a |
0110 0010 | 98 | b |
0110 0011 | 99 | c |
三、沿用
欧洲人在 ascii基础上扩展另一套字符集
(0-65535)
iso-8859-1/lantin -> 2个字节表示一个字符
中国人用计算机
iso-8859-1 -> gb2312 -> gbk
台湾地区的中国人用计算机
big5
四、统一
(1)起初:
ISO国际标准化组织 unicode 码字符集 2 个字节作为一个字符
包含全世界的字符(倡议是理想,现实是骨感的)
ascii 传输
0110 0001 0110 0010 0110 0011
unicode 传输
0000 0000 0110 0001 0000 0000 0110 0010 0000 0000 0110 0011
(2)妥协:
unicode 推出一个压缩/编码标准 utf 标准 (utf-8,utf-16,utf-32)
UTF-8
UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码,由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码Unicode字符。用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。
unicode 进行 utf-8 转目标数据一个字符串转换成 1-6 个字节不等
0000 0000 0110 0001 0000 0000 0110 0010 0000 0000 0110 0011 -> utf-8转换 -> 0110 0001 0110 0010 0110 0011
0000 0000 0110 0001 -> 97 -> a
0000 0000 0110 0010 -> 98 -> b
0000 0000 0110 0011 -> 99 -> c
五、总结
(1)utf-8 和 unicode 的关系
utf-8 是 unicode 一种压缩或者转码方式,目的方便 传输 和 存储,让传输变得更小,让存储更小
(2)用途
utf-8 格式的数据专门用于 网络传输和存储(更小了);
unicode 一般都用于内存计算
python中
内存中字符串类型 -> unicode
字节串类型 -> utf-8
# 把二进制(utf-8) 转换成 字符串 (unicode)
# utf-8 转 unicode ---> decode
# unicode 转 utf-8 ---> encode
(3)注意:
utf-8 把 unicode 转换成 1-6 个字节不等
中文通过 utf-8 转换出来占 3 个字节
(4)记忆:
unicode 不能够直接 用于网络传输和存储,必须进行 utf-8 编码
utf-8/gbk/gb2312/big5/… 看成二进制
unicode (内存中)字符串