在打印之前,您需要指定字符串的编码:
print unipre(hex(self.bb.bb.start + self.offset)).enpre('utf-8')print unipre(self.pos_instruction, self.ins.get_name()).enpre('utf-8')print unipre(self.ins.show_buff( self.bb.bb.start + self.offset )).enpre('utf-8')之所以可行,是因为在打印到终端时(它检测到终端使用utf-8),python会自动正确编码您的字符串(在您的情况下为utf-8)。
当您将输出重定向到文件时,Python没有有关应使用哪种编码的信息,它默认为ascii(这将导致您的错误)。
作为一般经验法则,请确保在打印之前始终对字符串进行编码,以使其
最好的方法可能是为此定义自己的打印方法:
def myprint(uniprestr): print uniprestr.enpre('utf-8')如果要避免上述情况,并使用默认的utf-8编码进行打印,则可以执行
import sysimport precssys.stdout=precs.getwriter('utf-8')(sys.stdout)当心这种方法!某些第三方库可能取决于默认编码为ascii和break。请注意,整个混乱已在Python 3中得到解决(默认为UTF-8编码)



