Base64-Dekodierung gibt anderes Ergebnis
Arbeite ich an einem kleinen Streamserve-Projekt (google :P), wo ich eine Base64-codierte Inhalte. Ich habe versucht, zu Dekodieren des base64-Zeichenfolge mit mehreren Decodern und allen das richtige Ergebnis zurück.. außer die Base64DecodeString Methode in Streamserve.
Die codierte Zeichenfolge ist: 'VABlAHMAdABpAG4AZwAgAGIAYQBzAGUAnga0aa==' Das erwartete Ergebnis ist: 'Testen base64'
Jedoch innerhalb von Streamserve-das Ergebnis ist: 'Tsig ae4'
Es einfach überspringt jeden zweiten Buchstaben. Nun ich weiß, die meisten Leute nicht wissen, Streamserve, aber ich habe eine Ahnung, dass dies vielleicht ein character encoding problem.. problem und hatte gehofft, jemand hat eine Ahnung, was passiert hier.
Kann ich ohne Probleme verschlüsseln/entschlüsseln von strings innerhalb von streamserve.. nur nicht strings ich bekomme als Eingabe
T�e�s�t�i�n�g� �b�a�s�e�6�4�
im "richtigen" UTF-8. Ich gehe davon aus, dass die Kodierung auf UTF-16-system.InformationsquelleAutor Herter | 2011-12-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Problem ist, dass Sie die Zeichenkodierung in UTF-16 und Dekodierung zurück zu ASCII oder UTF8. Ändern Sie Ihre string-encoding auf UTF8 vor der Codierung der string zu base64 und es sollte funktionieren.
Hier der hex-dump der, base64, blob:
Wenn Sie das entfernen der null-bytes, erhalten Sie diese:
Übersetzt die folgenden ASCII-text:
Versuchen Sie, "ISO-8859-1" statt.
scheint, wie es gibt keinen Unterschied.. ich bekomme die gleichen Ergebnisse, egal welchen Zeichensatz ich wähle. Auch ich habe bemerkt, dass die newline in der generierten Datei funktionieren nicht im Editor. Ich habe auch wirklich brauchen, zu bekommen, dass funktioniert..
Seltsam. Ich nehme an, man könnte einfach eine Schleife verwenden, um eine neue zu produzieren-array mit den nicht-null-bytes...
Das newline-Problem im Editor, nur weil Sie mithilfe von Unix-Stil
\n
Zeilenumbrüche nicht mehr im Windows-Stil\r\n
.InformationsquelleAutor Polynomial
Das Ergebnis der base64-Dekodierung wird binäre Daten (und ebenso der Eingang, wenn Codierung ist es, binäre Daten). Gehen von binäre Daten in einem string-oder Umgekehrt, Sie müssen, um eine Codierung wie UTF-8 oder UTF-16. Sie müssen herausfinden, welche Codierung Streamserve verwenden, und verwenden die gleiche Codierung, wenn Sie konvertieren Sie Ihre text-Daten werden in binäre Daten, mit zu beginnen, vor der base64-Codierung.
Es klingt wie Sie könnte möchten, verwenden Sie eine UTF-16-Kodierung von text, mit zu beginnen, obwohl in diesem Fall bin ich überrascht, du bist nicht nur immer Müll raus... wie es aussieht ist es tatsächlich ignorieren jedem anderen byte in dem dekodierten base64, anstatt es als das high-byte in ein UTF-16-code-unit.
InformationsquelleAutor Jon Skeet