Python 编码解码的问题(学习笔记+总结思考)
2017-07-08 15:49
597 查看
*几个问题:
1.# coding: utf-8与sys.setdefaultencoding(‘utf-8’)的区别?2.假如文件头 没有#coding: utf-8那么文件当前的编码是什么?
3.print是相当于读入么?print出来的结果的编码跟什么有关?
这几个问题会在看完以下知识后进行解答
一、基本概念:
1.字节:字节是计算机中数据存储的基本单位,一字节等于一个8位的比特,计算机中的所有数据,不论是保存在磁盘文件上的还是网络上的传输数据(文字、图片、视频、音频文件)都是由字节组成的.
2.字符:
一个字符就是一个信息单位,是各种符号和文字的统称(例如’A’和”汉字”)
3.字符集:
某范围内字符的集合,不同的字符集规定了字符的个数,比如ASCII字符集总共有128个字符
而GB2312字符集定义了7445个字符,包含了绝大部分的汉字字符
4.字符码:
字符集中每个字符的数字编号,例如ASCII字符集用0-127连续的128个数字分别表示128个字符,例如”A”的字符码编号是65.(字符码形如01000001)
5.字符编码(此处编码为名词概念):
将字符集中的字符码映射为字节流的一种具体实现方案(比如把0100000101000010划分为01000001.01000010的方案)
字符集与字符编码有种对应关系,例如ASCII字符集对应ASCII编码
6.编码encode、解码decode(此处编码为动词概念):
通常来说:读入文件需要decode一下,写入文件需要encode一下
编码的过程:字符->字节流(计算机处理的是字节流不是字符,故而编码,是以特定的方式把字符变成字节流)
解码的过程:字节流->字符()
二、字符编码:(按演进顺序)
1.[b]ASCII码(->EASCII码)[/b]2.(GB2312码)[b]GBK码(收录了少数民族文字) 是中国人自己创造的,解决了所有汉字的编码问题[/b]
3.[b]Unicode编码 它为世界上每一种语言的每一个字符定义了一个唯一的字符码(16进制数字表示两字节或者四字节编码)[/b]
Unicode的局限:有时候会浪费空间; 在各个编码规则面前作用像英语
4.[b]UTF-8 它是Unicode的一种实现方式,它是一种变长的字符编码[/b]
三、Python中的编码问题
Python的默认编码是ASCII码附:切换默认编码的方法
所以在Python2中,源代码的文件必须显示指定编码类型,代码中出现中文就会报错
#coding=utf-8
或者是
# -*- coding:utf-8
python2中字符串相关的类型有str和unicode两种类型
str类型的字符串的编码格式可以是ASCII、utf-8、gbk等任何一种
str(采用某种编码的字符串)–decode—>unicode串
unicode串–encode—>str(采用某种编码的字符串)
在python2中默认是用ascii码进行encode,decode操作
假如
s=’你好’
s.decode()
默认为ascii编码进行解码,但是ascii字符集中没有中文符
所以应该s.decode(‘utf-8’)
*回答几个问题:
1.# coding: utf-8与sys.setdefaultencoding(‘utf-8’)的区别?# coding: utf-8是设置文件的字符的编码为’utf-8’,假如不这么设置那py文件中出现中文ide将无法识别其为什么字符更加无法对其操作;而sys.setdefaultencoding(‘utf-8’)是设置系统的默认编码方案,即默认以’utf-8’的编码方案读入和写出文件
2.假如文件头 没有#coding: utf-8那么文件当前的编码是什么?
ascii编码方案 因为这是python解释器默认的;
python内部使用的字符串的类型为unicode类型
3.print是相当于读入么?print出来的结果的编码跟什么有关?
print 也是要将unicode串 encode 成有特定编码的字节流,所以与写入操作的规则类似
假如print的对象是unicode类型即使是中文也不会出现乱码,因为编译器会自动对unicode类型进行编码,
而假如指定了和原类型不同的编码就会出现乱码
四、检验编码的工具–chardet
import chardet chardet.detect(串) 通常只有只有str串可检测到编码方案
———-欢迎大家批评指正以及留言提问———-
相关文章推荐
- 学习笔记第四篇之python编码问题
- java web 学习笔记 编码问题总结
- Python学习总结笔记(5)--进程/线程Event机制使用时要注意的一个问题
- java web 学习笔记 编码问题总结
- python机器学习及实践学习笔记2-编码问题
- Python学习笔记(6):JSON的编码和解码
- Python学习笔记 --- 编码问题
- Python学习笔记,5,字符串和编码问题
- Python学习笔记:中文编码问题
- python 学习笔记-----编码问题
- python编码问题总结(持续更新)
- Python学习总结(三)——编码规范
- 学习python处理python编码问题
- Python学习笔记(二)--解决中文的问题
- python学习笔记——多线程同步问题
- 8.python中字符串的编码和解码问题——decode/encode
- python学习笔记18-重点和忘记知识点总结
- Cocos2d-x学习笔记(一) —— 详细的环境搭建问题总结
- 学习python处理python编码问题
- 字符集编码以及java乱码问题学习总结