一、Python3字符串全是Unicode
这意味着,只要用python3.x,无论我们的程序以那种语言开发,都可以在全球各国电脑上正常显示。
-
python3.x中,把字符串变成了unicode,文件默认编码为utf-8。
-
unicode 分为utf-32 (占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),所以utf-16 是最常用的unicode版本,但是在文件里存的还是utf-8,因为utf8省空间
二、Python3和Python2的不同
- Python3中,encode和decode是string和byte的转换,与Python2中不同(Python2中是编码的改变)
- 在Python3,encode编码的同时会把string变成bytes类型,decode解码的同时会把bytes类型变成string类型
- Python 3版本中,字符串是以Unicode编码的。一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes。
python3.x除了把字符串的编码改成了unicode,还把str和bytes做了明确区分,str就是unicode格式的字符串,而bytes就是单纯的二进制。
参考资料: https://www.jb51.net/article/179894.htm
三、string和bytes
-
string是文本(text)的抽象表示。字符串(string)由字符组成,字符也是抽象的实体且与任何二进制表示无关。
-
当操纵字符串的时候,很多细节是不用了解的。我们可以分割、切片和拼接字符串,在字符串内部进行搜索。但并不在乎内部是如何表示的,也不用在意底层一个字符要花费多少byte。
-
只有在需要将string编码(encode)成byte的时候,比如:通过网络传输数据;或者需要将byte解码(decode)成string的时候,我们才会关注string和byte的区别。