Python编程中的编码问题

1.python 2.x中字符串有两种类型:

1str1 = "北京"

2str2 = u"北京"

通过type(str1)type(str2)可以知道str1str类型的,而str2unicode类型。

 

2.python中的几个编码问题

1python脚本文件在保存到磁盘上时有文件的编码方式,如UTF-8,这个和编辑器有关系

2python解释器在读取python脚本时,默认使用的是ASCII编码来解析文件。我们可以在脚本文件头上使用#-*- coding: utf-8 -*-来改变python解析时使用的字符编码类型

3str1 = "北京str1str类型,"北京"的编码类型和文件的编码类型是一样的;str2 = u"北京"中的str2unicode类型,"北京"的编码类型是unicode字符编码。

4)我们可以使用str1.decode('xxx')来将str类型的str1xxx字符集解码,转换成unicode类型,使用unicode编码;我们可以使用str2.encode('xxx')unicode类型的str2使用xxx字符集编码,转换成str类型,使用xxx编码

 

3.区分几个概念

python脚本文件在磁盘上的编码方式

python对象在python解释器的内存空间中编码方式

 

4.举例说明

str1 = '中国'
str1.decode('utf-8')  #使用utf-8解析,然后再使用unicode编码,即从utf-8到unicode的转变
 
str2 = u'中国'
str2.encode('utf=8')  #使用utf-8编码,即从unicode到utf-8的转变<span style="font-family: SimSun; font-size: 10.5pt; background-color: rgb(255, 255, 255);"> </span>

备注:

1encodeencode使用unicode作为中间状态相互转换编码方式

2)在Python3.x版本中,把'xxx'和u'xxx'统一成Unicode编码,即写不写前缀u都是一样的,而以字节形式表示的字符串则必须加上b前缀:b'xxx'

3)Python当然也支持其他编码方式,比如把Unicode编码成GB2312,但这种方式纯属自找麻烦,如果没有特殊业务要求,请牢记仅使用Unicode和UTF-8这两种编码方式。

4str2 = u"北京假设python文件是使用utf-8编码,python解释器使用utf-8正常读取文件后,会将str2utf-8编码自动转换成unicode编码

(5)关于字符编码集参见<<字符编码ASCII | UNICODE | UTF-8 | GB2312学习>>


5.Python文件编码声明

Python中默认的编码格式是ASCII格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。解决方法为只要在文件开头加入 # -*- coding: utf-8 -*- 或者 #coding=utf-8 就行了,其实加上这个声明,是告诉python解释器使用utf-8来解析和处理python脚本文件。范例如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-

print "你好,世界";
#!/usr/bin/python
#coding=utf-8

print "你好,世界";
值得注意的是,Python3.X 源码文件默认使用utf-8编码,所以可以正常解析中文,无需指定 UTF-8 编码。



学习资料参考于:

http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386819196283586a37629844456ca7e5a7faa9b94ee8000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值