2012-05-15 75 views
2

我想连接两个字符串是这样的:在我的情况Python的连接字符串 - 的UnicodeDecodeError:“ASCII”编解码器不能解码字节

requestData = command + ' ' + data 

“数据”持有二进制数据,不应该打开 - 它应该只是粘在命令上。但是,imho python试图打开它,但它失败:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xbc in position 1: ordinal not in range(128) 

有没有办法将它粘贴而不打开?

编辑: Python 2.7 另外我的数据实际上不是UTF-8解码可能无法帮助 - 它的二进制数据。

+0

哪个Python版本是这样的尝试?必须是2.something,但Python 2.7.3成功连接非ASCII字符串:'In [1]:'привет'+''+'Veseliq' Out [1]:'\ xd0 \ xbf \ xd1 \ x80 \ xd0 \ xb8 \ xd0 \ xb2 \ xd0 \ xb5 \ xd1 \ x82 Veseliq''。 –

+0

其python 2.7,数据是misc二进制数据 – ddinchev

+1

是'command' unicode?如果是,首先“编码”。 – georg

回答

4

使用http://docs.python.org/library/array.html(与 'B'),而不是字符串

+0

请您详细说明一下吗? – ddinchev

+0

当然 - 你从来没有打算将数据用作可打印字符串(在这种情况下,我会建议将使用的编码从ASCII更改为unicode表示形式)。在这种情况下,使用字符串毫无意义,并可能导致意外问题。我的建议是使用正确表示意图的类型,然后连接该类型的项目(例如使用http://docs.python.org/library/array.html#array.array.extend),'B'表示无符号字符,相当于一个字节,这似乎是正确的表示,如果我正确理解您的需求。 – Ofir

相关问题