在utf8中编码字节字符串

时间:2015-01-08 08:24:35

标签: python utf-8

如何将带有非ascii字节的字节字符串编码为utf8格式?例如:

x = zlib.compress(pickle.dumps(numpy.random.rand(10, 10)))

# What to do here?
y = x.encode('utf8')

这会给我一个错误,说某些字节不在范围内(128)。我应该做些什么?

1 个答案:

答案 0 :(得分:1)

您必须确定非ASCII字节所指的代码点。例如,字节0xA1指的是什么代码点?

例如,您可以使用任何iso-8859-X编码:

bytes = chr(161)
utf8 = bytes.decode('iso-8859-1').encode('utf-8')
# compare with: utf8 = bytes.decode('iso-8859-2').encode('utf-8')

请注意,编码选择有所不同 - 在iso-8859-1下,字节0xA1编码为u'\xc2\xa1',但在iso-8859-2下,编码为u'\xc4\x84'