Frage

Kann href="http://en.wikipedia.org/wiki/Unicode" rel="noreferrer"> Unicode Zeichen codiert und mit Base64 ?

Ich habe versucht, die Zeichenfolge zu kodieren ‚الله‘, aber wenn ich es decodiert alles, was ich bekam, war ‚????‘.

War es hilfreich?

Lösung

Base64 konvertiert binäre in Text. Wenn Sie Text in ein Base64-Format konvertieren wollen, müssen Sie den Text konvertieren mit einigen geeigneten Codierung binär (zum Beispiel UTF-8, UTF-16) aus.

Andere Tipps

Natürlich können sie. Es hängt davon ab, wie Sie Ihre Sprache oder Base64-Routine behandelt Unicode-Eingang. Zum Beispiel Python b64 Routinen erwarten eine codierte Zeichenfolge (als Base64 binär in Text kodiert, nicht Unicode-Codepunkte in Text).

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)
الله

Sie nicht angeben, welche Sprache (n) Sie verwenden, sondern versuchen, den String in ein Byte-Array konvertieren (jedoch, dass in der Sprache Ihrer Wahl getan hat) und dann Base64 codiert, das Byte-Array.

In .NET können Sie diese (codieren) versuchen:

byte[] encbuf;

encbuf = System.Text.Encoding.Unicode.GetBytes(input);
string encoded = Convert.ToBase64String(encbuf);

... und zu entschlüsseln:

byte[] decbuff;

decbuff = Convert.FromBase64String(this.ToString());
string decoded = System.Text.Encoding.Unicode.GetString(decbuff);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top