当前位置:  开发笔记 > 编程语言 > 正文

Base64ing Unicode字符

如何解决《Base64ingUnicode字符》经验,为你挑选了2个好方法。

可以使用Base64对Unicode字符进行编码和解码吗?

我试图对字符串'الله'进行编码,但是当我解码它时,我得到的只是'????'.



1> Jon Skeet..:

Base64将二进制文件转换为文本.如果要将文本转换为base64格式,则需要首先使用适当的编码(例如UTF-8,UTF-16)将文本转换为二进制.



2> Vinko Vrsalo..:

他们当然可以.这取决于您的语言或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)
????


我只是注意到返回的字符串不是unicode对象.它应解码如下:c = base64.b64decode(b).decode('utf-8')
推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有