码迷,mamicode.com
首页 > 编程语言 > 详细

python字符编码的一些理解

时间:2015-09-28 23:57:07      阅读:364      评论:0      收藏:0      [点我收藏+]

标签:

#!/usr/bin/env python
#coding:utf-8
str = ‘中国‘
print type(str)
print str

str = u‘中国‘
print type(str)
print str

str = ‘中国‘.decode(‘UTF8‘)
print type(str)
print str

  

输出:
<type ‘str‘> 涓浗 <type ‘unicode‘> 中国 <type ‘unicode‘> 中国

  

  1、设置了默认编码是UTF8,#coding:utf-8,之后定义的字符串都会是utf8的格式进行编码;

      2、所以讲第二行代码去掉的时候,就会报错

      File "D:/Program Files/Python/TS/encoding.py", line 3
SyntaxError: Non-ASCII character ‘\xe4‘ in file D:/Program Files/Python/TS/encoding.py on line 3, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

      3、若将第二行代码改为#coding:gbk的话,‘中国’.decode(‘UTF8‘)就会报错,因为默认的编码是gbk了,所以中文字符解码的时候就应该是从gbk进行解码

  4、ps:在python自带的idle中第一个输出也不会是乱码

下面简单介绍一些解码和编码:

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

str = ‘中国‘.decode(‘UTF8‘)
print type(str)
print str

  unicode我的理解就是一个过渡的编码形式,decode也就是解码,都会解码成unicode形式,再经过编码转化成其他形式,所以转码前一直要知道str的编码格式。如下所示:

#!/usr/bin/env python
#coding:utf8

str = ‘中国‘.decode(‘utf8‘)
print type(str)
print str

print type(str.encode(‘gbk‘))
print str

  

<type ‘unicode‘>
中国
<type ‘str‘>
中国

  

 

  文件的读写

 首先,我们来了解一下中文的编码。

  1、GB2312-80字符集,中文名国家标准字符集(GB=GuóBiāo国标)。收入汉字6763个,符号715个,总计7478个字符,这是大陆普遍使用的简体字字符集。

  2、Big-5字符集(好像用的挺少吧),中文名大五码,是台湾繁体字的字符集,收入13060个繁体汉字,808个符号,总计13868个字符,普遍使用于台湾、香港等地区。

  3、GBK字符集,中文名国家标准扩展字符集(GB=GuóBiāo国标;K=Kuò扩,即扩展),兼容GB2312-80标准,包含Big-5的繁体字,但是不兼容Big-5字符集编码,收入21003个汉字,882个符号,共计21885个字符,包括了中日韩(CJK)统一汉字20902个、扩展A集(CJK Ext-A) 中的汉字52个。

  4、GB18030-2000字符集,包含GBK字符集和CJK Ext-A 全部6582个汉字,共计27533个汉字

  好像一般用到gb2312和gbk的比较多,GB18030只有遇到一些生僻的字的时候才会用的到。

  windows下的记事本默认的编码是ANSI:

  在简体中文Windows操作系统中,ANSI 编码代表 GBK 编码;在繁体中文Windows操作系统中,ANSI编码代表Big5;在日文Windows操作系统中,ANSI 编码代表 Shift_JIS 编码。

  

  言归正传,建立一个test.txt文件,内容abc中文。

#!/usr/bin/env python
#coding:utf8
file_obj = open(‘test.txt‘)
line = file_obj.readline()
print line.decode(‘utf8‘)
print type(line)

  这样是会有错误的因为txt默认编码是gbk的,所以在对line进行解码的时候用utf8是不行的,换成gbk就没问题了。

  

 

 

  ps:python中的print直接把字符串传递给操作系统,所以你需要把str解码成与操作系统一致的格式。

   

 

python字符编码的一些理解

标签:

原文地址:http://www.cnblogs.com/ferraborghini/p/4845280.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!