无法正确解码字符串

时间:2011-08-14 06:11:54

标签: python unicode utf-8 character-encoding

我有一个读取.txt文件的字符串,看起来像这样:

str='\x00I\x00S\x00T\x00A\x00\r\x00\n\x00[\x00/\x00B\x00O\x00D\x00Y\x00]\x00\r\x00\n\x00'

该文件的内容是葡萄牙语,不允许我编码为utf-8。

当我执行print(str)时,它会正常显示,但是当我尝试使用这些字符时,我会收到以下错误:UnicodeDecodeError: 'utf8' codec can't decode byte...。我需要做什么来获取字符串的内容,以便我可以使用它?谢谢。

编辑:实际上,print语句无法正常工作,因为某些重音会在print语句中被?替换。

1 个答案:

答案 0 :(得分:4)

首先需要decode it to a unicode

>>> '\x00I\x00S\x00T\x00A\x00\r\x00\n\x00[\x00/\x00B\x00O\x00D\x00Y\x00]\x00\r\x00\n'.decode('utf-16be')
u'ISTA\r\n[/BODY]\r\n'

如果它来自某个文件,请使用codecs.open()代替open(),并传递相应的编码。