金角大王Alex python 之路,致那些年,我们依然没搞明白的编码
python2与python3的区别
py2
str = bytes
为什么有bytes?
是因为要表示图片、视频等二进制格式的数据。
以 utf-8 编码的字符串,在windows上不能显示(Linux默认编码 utf-8 ,windows默认编码 gbk)
如何在python2里实现写一个软件,在全球各国的电脑上都能直接看?
以unicode编写你的软件 s = you_str.decode( ' utf-8 ' )
unicode类型
文件头
py2:以 utf-8 or gbk... 编码的代码,代码内容加载到内存,并不会被转成unicode,编码依然是 utf-8 or gbk...
py3:以 utf-8 or gbk... 编码的代码,代码内容加载到内存,会被自动转成unicode
py3
str = unicode
Python2和Python3编码总结
py2里有str,unicode,bytes,str和bytes基本一致,只有在图片、视频里是不一样的。 py2 str = py3 unicode
py2不支持中文,默认编码是ASCII,为使py2里编码的能在全球电脑上显示,于是就在py2里加了一个单独的类型,叫unicode,如果程序想在全球电脑里显示,那就要在内存里将编码转成unicode。
py3里,字符串默认编码unicode,文件默认编码 utf-8 ,将str和bytes做了明确的区分:str就是unicode格式的字符串,bytes就是单纯的二进制。
py3里不管打印什么字符都是unicode,py2里打印字符会打印成其对应的 utf-8 或 gbk。
unicode是为了存储和传输,传输是用二进制,存到硬盘里用的是 utf-8 或 gbk 。
py3里不要转编码,转编码是不可逆的,转不回来的!!!
Python只要出现各种编码问题,无非是哪里的编码设置错了。常见的编码错误的原因有:
(1)Python解释器的默认编码
(2)Python源文件文件编码
(3)Terminal使用的编码
(4)操作系统的语言设置