【问题标题】:Mixing string and base 64 with xml将字符串和base 64与xml混合
【发布时间】:2013-06-25 15:41:08
【问题描述】:

您好,我有问题,因为我想拥有带有二进制文件的 xml 文件。 问题在于 base64 编码我不知道如何编码图像并添加到字符串。 我想在那之后解析这个并解码图像。

stringResult = ResultXMLTag.ROOT_BEGIN + '\n'

f = open('id_'+str(1)+'.png','rb+')

stringResult += ResultXMLTag.RESULT_BEGIN+' '+'ID=\'1\'>\n'
stringResult += ResultXMLTag.CDATA_BEGIN+'\n'
stringResult += base64.b64encode(f.read())

stringResult2 = '\n'+ ResultXMLTag.CDATA_END+'\n'
stringResult2 += ResultXMLTag.RESULT_END+'\n'
stringResult2 += ResultXMLTag.ROOT_END
    return stringResult + stringResult2

data = ET.fromstring(self.downloadData(connection))
for result in data.findall('./RESULT'):
    _id = result.get('ID')
    out = open('id_'+_id+'.png','wb+')
    out.write(base64.decode(result.findtext('').encode()))

EDIT 错误符合 base64 “TypeError: Can't convert 'bytes' object to str implicitly”

编辑示例

>>> x = b'cat' + (base64.b64encode(b'dog'))
>>> x
b'catZG9n'

第二版

>>> x = 'cat' + str(base64.b64encode(b'dog'))
>>> x
"catb'ZG9n'"

我应该使用女巫版本来发送图像?我认为我所有的问题都是因为你如何附加字符串和字节。说编码图像然后解码很简单,但这不是我的情况。

【问题讨论】:

  • 有什么问题?您应该能够将 base64 编码字符串与非编码字符串连接起来。你有错误吗?这是什么?
  • TypeError: Can't convert 'bytes' object to str 隐式我不知道为什么我不能连接那个:/
  • 这个错误在哪一行?
  • 我会重写代码,你会看到的。
  • 查看我的更新,可能是downloadData问题

标签: python encoding python-3.x


【解决方案1】:

在 Python 3 中,b64encode 返回一个字节字符串。您需要将其转换为 Unicode 字符串。输出保证为 ASCII 字节,因此转换很简单。

stringResult += base64.b64encode(f.read()).decode('ascii')

【讨论】:

    【解决方案2】:

    更新: 问题也可能与下载数据()有关。你在使用 urlopen() 吗?从 downloadData() 收到后,您确定要显式转换为字符串吗?

    问题可能与您创建 XML 的方式有关。排队:

    stringResult += ResultXMLTag.RESULT_BEGIN+' '+'ID=\'1\'>\n'
    

    属性“ID”的引号在哪里?

    你能在没有 IMAGE 数据的情况下解析这个 XML 吗?将 base 64 编码字符串与非编码字符串连接不会导致任何问题,它们都是字符串。

    【讨论】:

    • 是的,我可以在没有 IMAGE 数据的情况下进行解析。即使使用其他字符串。引号使 ID='1'
    • downloadData 有效。我将 base64 连接到 String 时出错。
    • 这是python2还是python3?在 python3 中,字符串都是 unicode。
    猜你喜欢
    • 2015-08-09
    • 2012-04-10
    • 2018-01-22
    • 1970-01-01
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 2011-03-04
    相关资源
    最近更新 更多