![]() |
Keine Zuordnung für Unicode-Zeichen in der Multibyte-Zielcodeseite vorhanden
Hallo zusammen,
ich decodiere einen Base64-String, der eine XML-Datei enthält, also wieder ein String ist. Dabei wird die Exception EEncodingError 'Keine Zuordnung für Unicode-Zeichen in der Multibyte-Zielcodeseite vorhanden' geworfen.
Delphi-Quellcode:
Wenn ich die StringStreams ohne den zweiten Parameter für das Encoding create, läuft es ohne Exception durch. Dann gab es nur Probleme, dass Umlaute etc. nicht korrekt rüberkommen.
function Base64DecodeStringToString(Base64String:String):string;
var Input: TStringStream; Output: TStringStream; begin Input := TStringStream.Create(Base64String, TEncoding.UTF8); Output := TStringStream.Create('', TEncoding.UTF8); try Base64DecodeStream(Input, Output); result:=Output.DataString; // <-- hier Exception finally Input.Free; Output.Free; end; end; Das Base64DecodeStream ist von hier: ![]() Kann man da etwas machen, außer es mit einem try - except nochmal ohne Encoding zu versuchen? |
AW: Keine Zuordnung für Unicode-Zeichen in der Multibyte-Zielcodeseite vorhanden
Ich würde erstmal untersuchen, ob Base64DecodeStream wirklich das Gewünschte macht. Schreib den Output mal in eine Datei (über TFileStream) und guck dir das mit nem Hexeditor an, ob da ggf. was schiefläuft.
Eine Stolperstelle könnten z.B. Zeilenumbrüche im Base64-String sein - wenn die der Decoder nicht rausfiltert, wird das Ergebnis ungültig. |
AW: Keine Zuordnung für Unicode-Zeichen in der Multibyte-Zielcodeseite vorhanden
Guten Tipp!
Dabei habe ich bemerkt, dass ich vergessen hatte, dass in dem Base64 vor und hinter dem XML noch irgendwelche Zertifikate stehen, also Binärdaten. Die brauche ich nicht, also decodiere ich jetzt erst in einen MemoryStream und lese daraus nur das war ich brauche in den StringStream. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz