【问题标题】:Base58 and utf-8 Encoding Issues in Python 3.6.5Python 3.6.5 中的 Base58 和 utf-8 编码问题
【发布时间】:2018-04-27 06:31:47
【问题描述】:

我正在使用 Python 3.6.5。

您好,我遇到了编码问题。我相信这个问题与尝试同时使用 base58 和 utf-8 有关。这部分程序在 Python 2.7.14 中运行,我正在尝试将其转换为 Python 3.6.5。

def save_asset(asset):
nameString = '{0}_!_{1}'.format(asset['Name'].encode('utf-8').strip(), asset['AssetTypeID'])
filename = base58.b58encode(nameString)+'.png'

Cmd 输出:

File "Transfer.py", line 315, in start_download
    saveAttempt = save_asset(a)
File "Transfer.py", line 221, in save_asset
    filename = base58.b58encode(nameString)+'.png'
TypeError: can't concat str to bytes

【问题讨论】:

    标签: python utf-8 base58


    【解决方案1】:

    也许b58encode(来自您使用的任何库)的工作方式与标准库中的b64encode 相同,并返回一个字节数组,而不是文本字符串。

    如果您希望 filename 成为字节数组,请改用 b".png"。如果您希望它是文本字符串,请使用 .decode("ascii") 解码 b58encode 返回的字节(许多其他编码也应该有效,但这种编码很有效)。

    【讨论】:

      【解决方案2】:

      base58.b58encode(nameString) 是字节类型。您不能将字符串'.png' 与字节类型连接。

      你可以像下面这样使用

      filename = base58.b58encode(nameString)+base58.b58encode('.png')
      print(filename)
      >>b'blah-blah-byte-string'
      

      【讨论】:

        猜你喜欢
        • 2018-02-18
        • 1970-01-01
        • 1970-01-01
        • 2010-10-09
        • 1970-01-01
        • 1970-01-01
        • 2010-12-01
        • 1970-01-01
        相关资源
        最近更新 更多