Base64으로 Unicode 문자를 인코딩하고 디코딩 할 수 있습니까?Base64ing 유니 코드 문자
나는 'اله'이라는 문자열을 인코딩하려고 시도했지만, 내가 그것을 모두 해독하면 '????'이 생겼다.
Base64으로 Unicode 문자를 인코딩하고 디코딩 할 수 있습니까?Base64ing 유니 코드 문자
나는 'اله'이라는 문자열을 인코딩하려고 시도했지만, 내가 그것을 모두 해독하면 '????'이 생겼다.
물론 가능합니다. 언어 또는 Base64 루틴이 유니 코드 입력을 처리하는 방법에 따라 다릅니다. 예를 들어 Python의 b64
루틴은 인코딩 된 문자열을 필요로합니다 (Base64는 텍스트에 대한 유니 코드 코드 포인트가 아닌 텍스트를 이진 코드로 인코딩합니다).
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 "<stdin>", line 1, in <module>
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)
الله
+1의 경우 –
반환되는 문자열은 유니 코드 개체가 아닙니다. 이 코드는 다음과 같이 디코딩되어야합니다. c = base64.b64decode (b) .decode ('utf-8') – DanJ
사용중인 언어를 지정하지 않았지만 문자열을 바이트 배열로 변환 한 다음 (선택한 언어로 완료 되었음) 바이트 배열을 base64로 인코딩 해보십시오.
byte[] encbuf;
encbuf = System.Text.Encoding.Unicode.GetBytes(input);
string encoded = Convert.ToBase64String(encbuf);
을 ... 그리고 디코딩 :
.NET에서이 (인코딩)을 시도 할 수 있습니다
이 가 그것은 Base64로 루틴이 데이터를 잡는 방법에 따라 달라
가 무엇을의
플랫폼 및 코드? 물론 대답은 '예'입니다. –데이터가 Delphi에서 인코딩되고 PHP에서 디코딩/사용되었습니다. – UnkwnTech
죄송합니다. Delphi에 대한 단서가 없습니다. 하지만이 문제가 base64와 아무런 관련이 없음을 증명하는 답변을 제공했습니다. –