在python中将字节附加到字符串

Posted

技术标签:

【中文标题】在python中将字节附加到字符串【英文标题】:Append bytes to string in python 【发布时间】:2014-06-30 08:44:43 【问题描述】:

我有字节数组作为 str 并想发送它(如果我通过调试器查看它,它会告诉我 File.bodystr)。出于这个原因,我必须创建要发送的消息。

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 解码为 un​​icode

encoded.decode('utf-8')

【讨论】:

您的代码与问题中的代码有什么关系?对名为 string 的变量的赋值在哪里?建议对一些未公开的变量应用编码或解码并不是很有帮助。恕我直言,这个问题是无法回答的,因为缺乏有关存储在变量中的值的相关信息。 @ElmoVanKielmo,我想你是对的,不过,问题后面的 cmets 很有帮助。在他们之前,我看起来不对劲,寻找附加字符串 + 字节的方式,之后 - 我检查了所有传入的字符串是否为 unicode,找到一个,修复并解决了我的问题。 我很抱歉我在早上匆忙发布了这个。以上旨在作为一个示例,说明如何对具有 unicode 字符的字符串进行编码/解码,例如字符串 s 中的 é。我将编辑我的回复。

以上是关于在python中将字节附加到字符串的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 3 中将字节转换为十六进制字符串的正确方法是啥?

如何在golang中将切片附加到字节数组

如何在python中将字符串变量转换为字节类型? [复制]

如何在 Python 中将字符串转换为字节数组

在python中将字节转换为位

在 Python 3 中将二进制字符串转换为字节数组