python版本与编码的区别
2017-02-21 20:53
127 查看
主要编码介绍
python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。
显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
GBK,也是对Unicode编码的压缩和优化,全称为汉字内码拓展规范,使用了双字节编码方案,由中国信息技术标准化委员会制订。
所以,python2解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),如果是如下代码的话:
报错:ascii码无法表示中文
#!/usr/bin/env python print "你好,世界"
改正:应该显示的告诉python解释器,用什么编码来执行源代码,即:
#!/usr/bin/env python # -*- coding: utf-8 -*- print "你好,世界"
而在python3中,改为使用默认ut-8进行编码,所以在python3中不加# -*- coding: utf-8 -*-也不会出现乱码。
编码之间的转化
在python2.7中
如果想将UTF-8转化为GBK编码,那么先要解码成unicode,然后再编码成GBK编码,即:
temp = "李程" # 解码 需要指定原来是什么编码 temp_unicode = temp.decode("utf-8') # 编码 需要指定要编成什么编码 temp_gbk = temp_unicode.encode("gbk")
而在python3中
移除了unicode类型的编码,系统自动帮你完成内部一系列的转换,你只需要一步进行编码即可:
temp = "李程" # 自动进行转化 temp_gbk = temp.encode("gbk")
Tips:
window终端默认采用的编码格式是GBK,所以UTF-8编码的代码在终端显示会乱码,但是window可以自动将unicode编码的代码转化成自己想要的编码格式,所以在window上你只需要将其他类型的编码转化成unicode即可。相关文章推荐
- python版本与编码的区别
- python版本与编码的区别
- python版本与编码的区别
- python版本与编码的区别
- python版本与编码的区别
- Python基础教程(十二):GUI编程、版本区别、IDE
- Python2.x与3.x版本区别
- Python3.0和以前版本的区别
- 总结Python2(Python 2.x版本)和Python3(Python 3.x版本)之间的区别
- PYTHON文件第一行编码方式注释在Mac系统和Windows系统中的区别
- Python2.x版本中基本的中文编码问题解决
- Python 2.7.x 和 3.x 版本的重要区别小结
- python的2.5与2.7版本中ftp模块的一个小区别
- Python 2.7.x 和 3.x 版本的重要区别
- Python中utf-8与utf-8-sig两种编码格式的区别
- Python2.x版本中基本的中文编码问题解决
- python 2.7.x 和 3.x 版本区别
- Python raw_input和input总结 在版本2和版本3中的区别
- Python raw_input和input总结 在版本2和版本3中的区别
- 【和我一起学Python吧】Python3.0与2.X版本的区别