Python 用重音符号将utf-8编码为base64
我有一些数据如下:Python 用重音符号将utf-8编码为base64,python,encoding,utf-8,ascii,base64,Python,Encoding,Utf 8,Ascii,Base64,我有一些数据如下: data1 = ['Agos', '30490349304'] data2 = ['Desir\xc3\xa9','9839483948'] 我使用的API需要以base64编码的数据,因此我要做的是: data = data1 string = base64.b64encode("Hi, %s! Your code is %s" % (data[0], data[0])) myXMLRPCCall(string) 这对data1很好。对于data2,编码正常,但是XML
data1 = ['Agos', '30490349304']
data2 = ['Desir\xc3\xa9','9839483948']
我使用的API需要以base64编码的数据,因此我要做的是:
data = data1
string = base64.b64encode("Hi, %s! Your code is %s" % (data[0], data[0]))
myXMLRPCCall(string)
这对data1很好。对于data2,编码正常,但是XMLRPC返回一个错误,因为它只需要(从API文档中)ISO-8859-1(拉丁文1)字符。我的问题是:如何将字符串转换为拉丁文1,以便API接受它?首先确保您没有对编码等感到困惑。例如,请阅读 然后请注意,主要问题不是base64编码,而是您试图将字节字符串(Python2.x中的普通字符串)放入Unicode字符串中。我相信您可以通过从示例代码的最后一个字符串中删除“u”来解决此问题。这似乎有效:
base64.b64encode("Hi, %s! Your code is %s" % (data[0].decode('utf8').encode('latin1'), data[0]))
...
data = data2
base64.b64encode("Hi, %s! Your code is %s" % (data[0], data[0]))
# => 'SGksIERlc2lyw6khIFlvdXIgY29kZSBpcyBEZXNpcsOp'
# I can't test the XMLRPC parts, so this is just a hint ..
for_the_wire = base64.b64encode("Hi, %s! Your code is %s" % (data[0], data[0]))
latin_1_encoded = for_the_wire.encode('latin-1')
# send latin_1_encoded over the wire ..
一些python(2.X)unicode读物: