Pythonstr或字节数据与unicode字符之间的转换
示例
文件和网络消息的内容可能表示编码的字符。它们通常需要转换为unicode才能正确显示。
在Python2中,您可能需要将str数据转换为Unicode字符。默认值('',""等)是ASCII字符串,任何ASCII范围以外的值都将显示为转义值。Unicode字符串是u''(或u""等)。
# You get "© abc" encoded in UTF-8 from a file, network, or other data source s = '\xc2\xa9 abc' #s是字节数组,不是字符串 #不知道原来是UTF-8 #Python2中字符串文字的默认形式 s[0] #'\xc2'-无意义的字节(无上下文,例如编码) type(s) #力量-即使它不是有用的,没有已知的编码 u = s.decode('utf-8') #u'\xa9abc' #现在我们有了一个Unicode字符串,可以将其读取为UTF-8并正确打印 #在Python2中,Unicode字符串文字需要前导u #str.decode将可能包含转义字节的字符串转换为Unicode字符串 u[0] #u'\xa9'-Unicode字符'COPYRIGHTSIGN'(U+00A9)'©' type(u) #统一码 u.encode('utf-8') #'\xc2\xa9abc' #unicode.encode生成一个字符串,该字符串具有用于非ASCII字符的转义字节
在Python3中,您可能需要将字节数组(称为“字节文字”)转换为Unicode字符字符串。现在的默认值是Unicode字符串,并且现在必须以b'',b""等输入字节字符串文字。一个字节文字将返回True到isinstance(some_val,byte),假设some_val它是一个可能被编码为字节的字符串。
# You get from file or network "© abc" encoded in UTF-8 s = b'\xc2\xa9 abc' #s是一个字节数组,不是字符 #在Python3中,默认的字符串文字是Unicode;字节数组文字需要前导b s[0] #b'\xc2'-无意义的字节(无上下文,例如编码) type(s) #字节-现在字节数组是显式的,Python可以证明这一点。 u = s.decode('utf-8') #Unicode终端上的“©abc” #bytes.decode将字节数组转换为字符串(在Python3中为Unicode) u[0] #'\u00a9'-Unicode字符'COPYRIGHTSIGN'(U+00A9)'©' type(u) #力量 #Python3中的默认字符串文字是UTF-8Unicode u.encode('utf-8') #b'\xc2\xa9abc' #str.encode产生一个字节数组,将ASCII范围的字节显示为未转义的字符。