在python 2.7中:
>>> x1= '\xba\xba'
>>> x2=b'\xba\xba'
>>> x1==x2
True在python 3.4中:
>>> x1='\xba\xba'
>>> x2=b'\xba\xba'
>>> x1==x2
False
>>> type(x1)
<class 'str'>
>>> type(x2)
<class 'bytes'>x1转换为x2?x2转换为x1发布于 2015-01-18 04:38:07
在Python3.x中,使用str.encode (str ->字节)和bytes.decode (字节-> str)进行latin1编码(或iso-8859-1):
>>> x1 = '\xba\xba'
>>> x2 = b'\xba\xba'
>>> x1.encode('latin1') == x2
True
>>> x2.decode('latin1') == x1
True发布于 2015-01-18 15:19:46
x1和x2都是Python2中的字节字符串。如果比较Python2上的Unicode和字节,那么在本例中还可以得到False:
>>> u'\xba\xba' == b'\xba\xba'
__main__:1: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
Falsex1是Python3中的Unicode字符串。
您可以添加from __future__ import unicode_literals,使代码在Python2和3上都同样工作:
>>> from __future__ import unicode_literals
>>> x1 = '\xab\xab'
>>> type(x1)
<type 'unicode'>不要混合字节字符串和Unicode字符串。
要将Unicode字符串转换为字节,请执行以下操作:
bytestring = unicode_string.encode(character_encoding)要将字节转换为Unicode字符串,请执行以下操作:
unicode_string = bytestring.decode(character_encoding)https://stackoverflow.com/questions/28007177
复制相似问题