python3.6.5中的Base58和utf8编码问题

2024-09-29 19:29:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是python3.6.5。在

你好,我在编码方面遇到问题。我相信这个问题与尝试同时使用base58和utf-8有关。程序的这一部分在Python2.7.14中工作,我正试图将其转换为Python3.6.5。在

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

命令输出:

^{pr2}$

Tags: name程序format编码savedefassetfilename
2条回答

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

你可以用下面的

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

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

如果您希望您的filename是一个字节数组,请改用b".png"。如果您希望它是一个文本字符串,请使用.decode("ascii")b58encode返回的字节进行解码(许多其他编码也可以工作,但这种编码是有效的)。在

相关问题 更多 >

    热门问题