可以使用Base64对Unicode字符进行编码和解码吗?
我试图对字符串'الله'进行编码,但是当我解码它时,我得到的只是'????'.
Base64将二进制文件转换为文本.如果要将文本转换为base64格式,则需要首先使用适当的编码(例如UTF-8,UTF-16)将文本转换为二进制.
他们当然可以.这取决于您的语言或Base64例程如何处理Unicode输入.例如,Python的b64
例程期望编码的字符串(因为Base64将二进制编码为文本,而不是Unicode代码点编码为文本).
Python 2.5.1 (r251:54863, Jul 31 2008, 22:53:39) [GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> a = 'ûñö' >>> import base64 >>> base64.b64encode(a) 'w7vDscO2' >>> base64.b64decode('w7vDscO2') '\xc3\xbb\xc3\xb1\xc3\xb6' >>> print '\xc3\xbb\xc3\xb1\xc3\xb6' ûñö >>> >>> u'üñô' u'\xfc\xf1\xf4' >>> base64.b64encode(u'\xfc\xf1\xf4') Traceback (most recent call last): File "", line 1, in File "/usr/lib/python2.5/base64.py", line 53, in b64encode encoded = binascii.b2a_base64(s)[:-1] UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128) >>> base64.b64encode(u'\xfc\xf1\xf4'.encode('utf-8')) 'w7zDscO0' >>> base64.b64decode('w7zDscO0') '\xc3\xbc\xc3\xb1\xc3\xb4' >>> print base64.b64decode('w7zDscO0') üñô >>> a = '????' >>> a '\xd8\xa7\xd9\x84\xd9\x84\xd9\x87' >>> base64.b64encode(a) '2KfZhNmE2Yc=' >>> b = base64.b64encode(a) >>> print base64.b64decode(b) ????