在python中将字节附加到字符串
Posted
技术标签:
【中文标题】在python中将字节附加到字符串【英文标题】:Append bytes to string in python 【发布时间】:2014-06-30 08:44:43 【问题描述】:我有字节数组作为 str 并想发送它(如果我通过调试器查看它,它会告诉我 File.body
是 str
)。出于这个原因,我必须创建要发送的消息。
request_text += '\n'.join([
'',
'--%s' % boundary_id,
attachment_headers,
File.body,
])
但仅在它尝试加入文件正文时,我收到异常:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)
不过,在我拿到它的example 中,它是这样实现的。我应该如何命令 python 字符串工作字节字符串?我应该以某种方式对其进行解码吗?但是如何,如果那不是文本,而只是字节。
【问题讨论】:
好像是 unicode。是 Python 2 还是 3? 但调试器将主体参数显示为 str 这里的attachment_headers
是什么? boundary_id
是什么类型? request_text
是什么类型的?
'\n'.encode('latin-1').join([ ...
工作吗?
@Will:那不会有所作为。在 Python 2 中,'\n'
已已编码。您会将字节字符串转换为 unicode 字符串(隐式解码),然后将再次编码回字节字符串。
【参考方案1】:
您可能会收到错误消息,因为您的字符串包含非 ascii 字符。以下是关于如何编码/解码包含非 ascii 字符的字符串的示例
1) 将字符串转成unicode
string="helloé"
u=unicode(string, 'utf-8')
2) 将字符串编码为 utf-8 后发送到网络
encoded = u.encode('utf-8')
3) 在另一边将其从 utf-8 解码为 unicode
encoded.decode('utf-8')
【讨论】:
您的代码与问题中的代码有什么关系?对名为string
的变量的赋值在哪里?建议对一些未公开的变量应用编码或解码并不是很有帮助。恕我直言,这个问题是无法回答的,因为缺乏有关存储在变量中的值的相关信息。
@ElmoVanKielmo,我想你是对的,不过,问题后面的 cmets 很有帮助。在他们之前,我看起来不对劲,寻找附加字符串 + 字节的方式,之后 - 我检查了所有传入的字符串是否为 unicode,找到一个,修复并解决了我的问题。
我很抱歉我在早上匆忙发布了这个。以上旨在作为一个示例,说明如何对具有 unicode 字符的字符串进行编码/解码,例如字符串 s 中的 é
。我将编辑我的回复。以上是关于在python中将字节附加到字符串的主要内容,如果未能解决你的问题,请参考以下文章