将带重音符的utf-8编码转换为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)
这样处理数据1是没问题的。对于数据2,编码也没问题,但之后XMLRPC返回了一个错误,因为根据API文档,它只接受ISO-8859-1(拉丁1)字符。
我想问的是:我该如何把我的字符串转换成拉丁1格式,以便API能接受呢?
3 个回答
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的资料:
1
首先,确保你对编码等概念没有搞混。可以看看,比如说,这篇文章。
然后要注意,主要的问题不是出在base64编码上,而是你试图把字节串(在Python 2.x中就是普通字符串)放进一个Unicode字符串里。我觉得你可以通过把你示例代码最后一个字符串前面的“u”去掉来解决这个问题。
1
这段内容是关于编程问题的讨论,主要是在说如何处理某些特定的情况。虽然具体的问题没有给出,但可以想象这是在帮助初学者理解一些常见的编程概念。
在编程中,很多时候我们会遇到需要解决的难题。比如,如何让程序更有效率,或者如何避免一些常见的错误。这些问题通常会在编程社区中被讨论,大家会分享自己的经验和解决方案。
如果你是刚开始学习编程,可能会觉得这些讨论有点复杂,但其实只要慢慢来,多问问题,就能逐渐理解这些概念。记住,编程是一个不断学习和实践的过程,不用急于求成。
base64.b64encode("Hi, %s! Your code is %s" % (data[0].decode('utf8').encode('latin1'), data[0]))