深入理解Python字符集编码linux教程在python中和字符串相关的类型,分别是str,unicode两种不同的类型:basestring|+--str|+--unicode脚本字符编码:指脚本文件本身是用何种字符编码的,默认情况Python解释器(解释器就是执行python程序的程序)认为脚本是ascii码:#"你好",:File“”,line1yntaxError:Non-ASCIIcharacter‘\xe4′,butnoencodingdeclared;see所以如果文件中要使用非ascii编码的字符串,就必须在文件头部声明:#coding=utf8#或者#coding=gb18030这样就相当于告诉python解释器使用utf8编码或者gb18030来解释脚本文件。解释器字符编码:解释器字符编码是指解释器内部认为的str类型的字符串的编码,也就是说python解释器会把str类型的字符串当作何种字符编码来处理。默认,python解释器字符编码也是ascii的。可以通过命令查看:>>>()'ascii'不同的字符编码集如utf-8、gbk、iso8859-1等等的字符串(注:这些字符编码集都是针对str类型的字符串而言的,unicode字符串没有字符集这类说法)之间相互转换是怎么进行的呢,答案就是他们通过一个中间桥梁unicode来转换,相关的两个方法是decode和encode。#(encoding)=====><type'str'>to<type'unicode'>#(encoding)=====><type'unicode'>to<type'str'>问题:现在假设我想要把一个gbk字符编码的str对象转换为utf-8的str对象,该如何转换呢,现在默认我是在windows下操作,操作系统的字符编码默认是gbk的,>>>s="你好">>>s'\xc4\xe3\xba\xc3'>>>len(s)4gbk字符编码的两个中文的长度是4,如果是utf-8编码的字符串“你好”的长度是6,稍后我们把“s”转换成utf-8的看看是不是长度为6。首先我们要先把”s”转换成unicode,在从unicode转换成utf-8编码的str对象:>>>s1=('gbk').encode('utf-8')>>>s1'\xe4\xbd\xa0\xe5\xa5\xbd'>>>len(s1)6>>>实验证明s1就是一个utf-8编码的str类型的字符串对象。str(S)与unicode(S)str(s)和unicode(s)是两个工厂方法,分别返回str字符串对象和unicode字符串对象,str(s)(‘ascii’)的简写。实验:>>>s3=u"你好">>>s3u'\u4f60\u597
深入理解python字符集编码 来自淘豆网www.taodocs.com转载请标明出处.