标签:bytes span 源文件 其它 class 内存 mina 图片 情况
计算机容量:
在ASSIC中 每一个字符统一都需要8个bit来存储
1位 = 1bit
8bit = 1byte = 1字节
1024bytes = 1kbytes =1KB 1024个字符
1024KB = 1Million Bytes = 1MB = 1兆
1024MB = 1G
1024GB = 1TB
1024TB = 1PB
字符编码:
上面的utf-8编码之所以能在windows gbk的终端下显示正常,是因为到了内存里python解释器把utf-8转成了unicode , 但是这只是python3, 并不是所有的编程语言在内存里默认编码都是unicode,比如 万恶的python2 就不是, 它的默认编码是ASCII,想写中文,就必须声明文件头的coding为gbk or utf-8, 声明之后,python2解释器仅以文件头声明的编码去解释你的代码,加载到内存后,并不会主动帮你转为unicode,也就是说,你的文件编码是utf-8,加载到内存里,你的变量字符串就也是utf-8, 这意味着什么你知道么?。。。意味着,你以utf-8编码的文件,在windows是乱码。
Python2中默认的字符串编码是ASCII码,加载到内存中不会自动转成Unicode。
因为只有2种情况 ,在windows上显示才不会乱
这就需要用到encode(转码)和decode(解码)
UTF-8 --> decode 解码 --> Unicode
Unicode --> encode 编码 --> GBK / UTF-8 ..
先decode()成Unicode,括号中加的编码就是文件头编码,告诉python2这是用什么编码写的程序。
把Unicode编码成GBK,这样就可以显示中文了。
总结:
1、python3文件编码默认是utf-8,字符串编码默认是Unicode,默认支持中文,加载到内存中是字符串,编码是Unicode,自动转成GBK显示。
2、pyrhon2文件编码和字符串编码默认都是ASCII码,默认不支持中文,需要在文件头上加上或者进行解码和编码:
# -*- coding: UTF-8 -*-
#coding=utf-8
3、保存的文件是什么编码就需要用什么编码打开否则会乱码。
Python只要出现各种编码问题,无非是哪里的编码设置出错了
常见编码错误的原因有:
标签:bytes span 源文件 其它 class 内存 mina 图片 情况
原文地址:https://www.cnblogs.com/james201133002/p/9077891.html