使用Python处理一般字符串数据时,可以很放心地使用Unicode字符串str数据类型,至于Python内部如何处理可以不用理会,这些事情Python的直译程序会处理。
但是有一天需要与外界沟通或交换数据时,特别是我们使用中文,如果不懂中文字符串与bytes数据的转换,所获得的数据将会是乱码。例如,设计电子邮件的接收程序,所接收的可能是bytes数据,这时必须学会将bytes数据转成Unicode字符串,否则会有乱码产生。或是有一天你要设计供中国人使用的网络聊天室,必须设计将使用者所传送的Unicode中文字符串转成bytes数据传上聊天室,然后也要设计将网络接收的bytes数据转成Unicode中文字符串,这个聊天室才可以顺畅使用。
bytes数据格式是在字符串前加上b,例如,下列是“魁”的bytes数据。
b'\xe9\xad\x81'
如果是英文字符串的bytes数据格式,相对单纯地会显示原始的字符,例如,下列是字符串“abc”的bytes数据。
b'abc'
将Unicode字符串转成bytes数据称为 编码 (encode),所使用的是encode( )函数,这个方法的参数是指出编码的方法,可以参考下列表格。
如果Unicode字符串是英文则转成bytes数据相对容易,因为对于utf-8格式编码,Unicode也是用一个byte存储每个字符串的字符。
实例1 :英文Unicode字符串数据转成bytes数据。
假设有一个字符串string,内容是‘abc’,可以使用下列方法设置,同时检查此字符串的长度。
下面将Unicode字符串string用utf-8编码格式转成bytes数据,然后列出bytes数据的长度、数据类型,以及bytes数据的内容。
实例2 :中文Unicode字符串数据转成bytes数据。
假设有一个字符串name,内容是‘洪锦魁’,可以使用下列方法设置,同时检查此字符串的长度。
下面将Unicode字符串name用utf-8编码格式转成bytes数据,然后列出bytes数据的长度、数据类型,以及bytes数据的内容。
由上述数据可以得到原来Unicode字符串用了3byte存储一个中文字,所以3个中文字获得了bytes的数据长度是9。
对于一个专业的Python程序设计师而言,常常需要从网络取得数据,所取得的是bytes数据,这时需要将此数据转成Unicode字符串,将bytes数据转成Unicode字符串可以称为 译码 ,所使用的是decode( )函数,这个方法的参数是指出编码的方法,与encode( )函数相同。
实例1 :bytes数据转成Unicode字符串数据。
实例2 :bytes数据转成Unicode字符串数据。
下面是将nameBytes数据使用utf-8编码格式转成Unicode字符串的方法,同时列出字符串长度和字符串内容。