Python编码,文件编码的操作
Python2&3 编码区别
Python2.X中
编码格式默认 ASCII
,字符串存在两种格式, str
,unicode
因为受系统的影响所以,Python 2.x在头部加上一行编码声明。
编码的转换,需要转换为unicode
为中间,
s.decode('utf-8')
受系统
Win GB2312
Linux 默认UTF-8
Python3.X中
编码默认unicode
,python3中默认unicode
所以字符串被直接处理作为中文,在python2有的字节串是展示不出来的。
不受系统的影响统一为unicode,py文件默认为UTF-8可以不用声明
判断编码
1、使用isinstance(s, str)来判断一个字符串是否为一般字符串(str为ascii类型的字符串,utf-8、utf-16、GB2312、GBK等都是ascii类型的字符串);
2、使用type()或者.class
查看文件
1 |
|
字符编码(character encoding)
8 bit = 1Byte(字节)
编码:
ASCII.(American Standard Code for Information Interchange,汉字内码扩展规范)
8bit. 1Byte
GBK.(汉字内码扩展规范) 国标码. 2Byte +>> 1字符
GB2312(中国国家标准简体中文字符集) 16bit, 2byte 两个字节表示一个字符
GB18030 与GBK与GB2312不同的是,GB18030采用单字节、双字节和四字节三种方式对字符编码
GB2312 < GBK < GB18030
Unicode. 万国码. 32bit, 4byte ()
- UTF-8. 可变长度的Unicode.
英文: 1byte
欧洲: 2byte
中文: 3byte - 编码之后的数据bytes
bytes.decode() 解码
编码
- encode: 将默认编码(unicode)转换为其他编码。
- decode: 将默认或者指定编码字符串转换为 unicode。
1 |
|
文件的操作
1 |
|
1B bytes (字节) = 8bit
Utf-8 中,中文1 字符 = 3 字节
seek(3)*UTF-8中 一个中文 3 个字节
读取1个字符
read(n) 读取n个字符
,rb模式则读取的是n个字节
1 |
|
seek(n) 光标移动到n位置, 注意, 移动的单位是byte. 所以如果是UTF-8的中⽂文部分要
是3的倍数.通常我们使⽤用seek都是移动到开头或者结尾.
移动到开头: seek(0)
移动到结尾: seek(0,2) seek的第⼆二个参数表⽰示的是从哪个位置进⾏行行偏移, 默认是0, 表⽰示开头, 1表⽰示当前位置, 2表⽰示结尾
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!