python中的UTF-8问题
我不是python中utf-8的粉丝;我似乎不知道如何解决这个问题。正如您所看到的,我已经在尝试对值进行B64编码,但看起来python正在尝试首先将其从utf-8转换为ascii 一般来说,我尝试使用urllib2发布具有UTF-8字符的表单数据。我想大体上是一样的,尽管没有有效的答案。我试图通过base64编码只发送一个字节字符串python中的UTF-8问题,python,utf-8,Python,Utf 8,我不是python中utf-8的粉丝;我似乎不知道如何解决这个问题。正如您所看到的,我已经在尝试对值进行B64编码,但看起来python正在尝试首先将其从utf-8转换为ascii 一般来说,我尝试使用urllib2发布具有UTF-8字符的表单数据。我想大体上是一样的,尽管没有有效的答案。我试图通过base64编码只发送一个字节字符串 Traceback (most recent call last): File "load.py", line 165, in <module>
Traceback (most recent call last):
File "load.py", line 165, in <module>
main()
File "load.py", line 17, in main
beers()
File "load.py", line 157, in beers
resp = send_post("http://localhost:9000/beers", beer)
File "load.py", line 64, in send_post
connection.request ('POST', req.get_selector(), *encode_multipart_data (data, files))
File "load.py", line 49, in encode_multipart_data
lines.extend (encode_field (name))
File "load.py", line 34, in encode_field
'', base64.b64encode(u"%s" % data[field_name]))
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/base64.py", line 53, in b64encode
encoded = binascii.b2a_base64(s)[:-1]
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 7: ordinal not in range(128)
beer对象的json是(这是传递到encode\u multipart\u data
的数据):
不能对Unicode进行base64编码,只能对字节字符串进行编码。在Python 2.7中,为需要字节字符串的函数提供Unicode字符串会导致使用ascii
编解码器隐式转换为字节字符串,从而导致出现以下错误:
>>> base64.b64encode(u'America\u2019s')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\base64.py", line 53, in b64encode
encoded = binascii.b2a_base64(s)[:-1]
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 7: ordinal not in range(128)
不能对Unicode进行base64编码,只能对字节字符串进行编码。在Python 2.7中,为需要字节字符串的函数提供Unicode字符串会导致使用ascii
编解码器隐式转换为字节字符串,从而导致出现以下错误:
>>> base64.b64encode(u'America\u2019s')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\base64.py", line 53, in b64encode
encoded = binascii.b2a_base64(s)[:-1]
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 7: ordinal not in range(128)
您希望如何对Unicode进行base64编码?是否要将原始UTF8字节编码为base64?beer的值是多少?@Robᵩ - 将啤酒添加到问题中错误是指'\u2019'
,这是一个引号字符'
,我在您的数据中没有看到。@Blckknght-抱歉,我拿错了啤酒。我把它改成了里面有'
的那个。但是,在我的代码中,UTF的处理还是有问题的。您希望base64如何编码Unicode?是否要将原始UTF8字节编码为base64?beer的值是多少?@Robᵩ - 将啤酒添加到问题中错误是指'\u2019'
,这是一个引号字符'
,我在您的数据中没有看到。@Blckknght-抱歉,我拿错了啤酒。我把它改成了里面有'
的那个。但是,在我的代码中处理UTF还是有问题的。
>>> base64.b64encode(u'America\u2019s')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\base64.py", line 53, in b64encode
encoded = binascii.b2a_base64(s)[:-1]
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 7: ordinal not in range(128)
>>> base64.b64encode(u'America\u2019s'.encode('utf8'))
'QW1lcmljYeKAmXM='