假设Python3(在Python2中,这一区别不太明确)-字符串是一个字符序列,即unicode codepoints;它们是一个抽象的概念,不能直接存储在磁盘上.不出所料,字节串是一系列字节-can存储在磁盘上的东西.它们之间的映射是encoding-有相当多的这样的(并且有无限多是可能的)-您需要知道在特定情况下应用哪一个才能进行转换,因为不同的编码可能会将相同的字节映射到不同的字符串:
>>> b'\xcf\x84o\xcf\x81\xce\xbdo\xcf\x82'.decode('utf-16')
'蓏콯캁澽苏'
>>> b'\xcf\x84o\xcf\x81\xce\xbdo\xcf\x82'.decode('utf-8')
'τoρνoς'
一旦知道要使用哪个,就可以使用字节字符串的.decode()
方法从中获取正确的字符串,如上所述.为了完整性起见,字符串的.encode()
方法与此相反:
>>> 'τoρνoς'.encode('utf-8')
b'\xcf\x84o\xcf\x81\xce\xbdo\xcf\x82'