对于Python的初学者来说,处理汉字估计是最头疼的一件事了,我也算是个初学者,断断续续接触Python也有一年多了,最近才终于搞明白了Python里对多字节字符的处理是怎么回事。
其实Python里对编码的处理能力还是很强大的,只是需要理解它处理字符的方式。Python里有两种字符串,str和unicode,他们都是字符的序列(相当于字符数组),区别在于字符的不同,str里一个字符就是一个字节,unicode中的一个字符是一个unicode里的字,长度可能是2字节,也可能是4字节。
Unicode是Python对多字节字符使用的一种内部编码,也就是说在Python内部处理多字节字符的官方编码,但它并不是我们常见的utf-8,具体是什么编码我也不清楚。在Python里处理字符串时,都需要先将来自文件、网络、或者str的字符串转换成Unicode格式,这一步是通过unicode工厂函数或者str的decode方法(decode可以理解为是从一种被编码的二进制字节流解码为Python内部通用的格式),但这是Python并不知道这个外部格式到底是什么格式,decode方法可以传入一个参数,表示这个数据是什么编码。
得到Unicode对象后,就可以对字符串进行各种操作了。在完成操作,要把字符串输出到文件、网络、或者数据库的时候,就要根据需要再把Unicode转换成需要的目标编码了,这是就要用到encode方法了,将字符串编码成需要的格式。
http://effbot.org/zone/unicode-objects.htm
Your email is never published nor shared. Required fields are marked *
You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Python处理中文的编码问题
对于Python的初学者来说,处理汉字估计是最头疼的一件事了,我也算是个初学者,断断续续接触Python也有一年多了,最近才终于搞明白了Python里对多字节字符的处理是怎么回事。
其实Python里对编码的处理能力还是很强大的,只是需要理解它处理字符的方式。Python里有两种字符串,str和unicode,他们都是字符的序列(相当于字符数组),区别在于字符的不同,str里一个字符就是一个字节,unicode中的一个字符是一个unicode里的字,长度可能是2字节,也可能是4字节。
Unicode是Python对多字节字符使用的一种内部编码,也就是说在Python内部处理多字节字符的官方编码,但它并不是我们常见的utf-8,具体是什么编码我也不清楚。在Python里处理字符串时,都需要先将来自文件、网络、或者str的字符串转换成Unicode格式,这一步是通过unicode工厂函数或者str的decode方法(decode可以理解为是从一种被编码的二进制字节流解码为Python内部通用的格式),但这是Python并不知道这个外部格式到底是什么格式,decode方法可以传入一个参数,表示这个数据是什么编码。
得到Unicode对象后,就可以对字符串进行各种操作了。在完成操作,要把字符串输出到文件、网络、或者数据库的时候,就要根据需要再把Unicode转换成需要的目标编码了,这是就要用到encode方法了,将字符串编码成需要的格式。
http://effbot.org/zone/unicode-objects.htm