python 笔记05
1.编码部分历史及文件编码简介
关于中文
为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。
GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。
GB2312 支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的 GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。
从ASCII、GB2312、GBK 到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。
有的中文Windows的缺省内码还是GBK,可以通过GB18030升级包升级到GB18030。不过GB18030相对GBK增加的字符,普通人是很难用到的,通常我们还是用GBK指代中文Windows内码。
( 参考:http://www.cnblogs.com/alex3714/articles/5465198.html )
时间 | 版本 | 支持中文个数 |
---|---|---|
1980 | gb2312 | 6700+ |
1995 | gbk1.0 | 20000+ |
2000 | gb18030 | 27000+ |
? | unicode万国码 | 存一个字符,统一占用2个字节 |
? | UTF-8 | 是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存... |
显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
在 Python2.x == ASICII 默认编码
比如 print "我爱北京天安门!" 是执行不了的,因为ASCII无法表示中文。但是可以在第一行输入以下命令使用utf-8编码.
# -*- coding: utf-8 -*-
或
#coding:utf-8
告诉python解释器用什么编码来执行源代码。
另外需要注意的地方:windows 的编码、与Notepad++的编码是否一致!否则会出现乱码!
在 Python3.x == Unicode 默认编码.
2.注释及简单的用户输入输出
2.1 注释
(1) 当行注释:#
比如
msg = "我爱北京天安门!"
print(msg)
print(msg)
print(msg)
那么就会打印“我爱天安门”3次,我们只要2次的话怎么办呢?
msg = "我爱北京天安门!"
print(msg)
print(msg)
#print(msg)
就可以在最前面 加一个#号 把它当成注释,就不会执行了!
(2)多行注释: ''' (3个单引号)
2.2 简单的用户输入输出
input("your name:")
input("your age:")
注意:input接受的所有数据都是字符串,即便你输入的是数字,但依然被当成字符串处理。
如果要打印出来的话,就可以:
name = input("your name:")
age = input("your age:")
print(name,age)
加复杂点:
name = input("your name:")
age = input("your age:")
death_age = 80
print("你的名字",name)
print("你还能活",death_age-age,"年")
执行:
出现了一个错误: 划线部分意思是“减号不支持整数和字符串的运算”!
此处的 80 岁就是整数,而输入的年龄是字符串,他们之间不能相减!
int = integer = 整数
str = string = 字符串
怎么办?
尝试1:“把整数转成字符串!”
把 death_age - age 外面加 str() ,使他整体变成字符串!
执行:
依然不行!(图略)
尝试2:“先把age转成int,减完后再转成str”
print("你还能活",str(death_age -
int(age)),"年")
执行,成功!
尝试3:2和尝试4,“整体变成字符串”再用“+”连接!
执行,成功!
总结 :只要把字符串转成整数就可以相加减了!