在Python中处理B64编码的数据

在Python中处理B64编码的数据,python,Python,在我基于谷歌应用程序引擎的应用程序中,我从SOAP Web服务获取数据。 问题是其中一个标记包含二进制64编码数据。我使用 decodedStr = base64.b64decode(str(content)) 在decodeStr中获取垃圾数据时,解码似乎没有正确完成。我认为问题在于内容字符串被错误地解析为unicode字符串,而不是简单的字节字符串 任何Python大师都能告诉我如何在Python中处理b64编码的数据吗 现在我正在使用这个变通方法 fileContent = str(fi

在我基于谷歌应用程序引擎的应用程序中,我从SOAP Web服务获取数据。 问题是其中一个标记包含二进制64编码数据。我使用

decodedStr = base64.b64decode(str(content))
在decodeStr中获取垃圾数据时,解码似乎没有正确完成。我认为问题在于内容字符串被错误地解析为unicode字符串,而不是简单的字节字符串

任何Python大师都能告诉我如何在Python中处理b64编码的数据吗

现在我正在使用这个变通方法

fileContent = str(fileContent)
fileContent = fileContent[3:-3]
self.response.out.write(base64.b64decode(fileContent))

您可以尝试使用base64.decodestring,或者如果向您传递了url base64.urlsafe\u b64decode。
确保数据不在base16或base32中。

奇怪。如果内容不是b64编码的,则对解码的调用应引发TypeError异常。我想不会吧


这会让我想知道你怎么知道最终的解码器不是你想要的?

等等……这真让人困惑。手动排除内容是否会产生有效的b64解码数据?“内容”是否包括无关内容(非b64编码)。数据?webservice发送的值不包含任何非编码数据。但当我将其转换为str时,值被这些字符u'封装(.因此,为了删除这些字符,我删减了3个字符。之后,b64decode函数会正确地转换数据。听起来您对您的问题有了答案——但我想这可能有助于指出,如果字符串实际上包含您引用的前缀,那么它就不是一个干净的b64流。它听起来像webservice Is向您发送了一个python格式的unicode字符串,而您的应用程序正在使用unicode前缀将其吞并。实际上,如果变量名“fileContent”表示它来自文件,则听起来像是有人将unicode字符串流式传输到文件中,而您的应用程序从那里将其全部吞并(使用前缀)