![]() |
UTF-8 Problem bei IXMLHTTPRequest
Hallo,
ich habe ein kleines Programm geschrieben mit dem XML-Dateien über einen POST-Request mit einer Gegenstelle ausgetauscht werden. Damit das Ganze sicher abläuft wird das per https gemacht. Prinzipiell funktioniert auch alles recht gut, außer einiger Merkwürdigkeiten bei Umlauten/Sonderzeichen. Damit es etwas verständlicher wird hier etwas Quelltext in vereinfachter Form:
Code:
Leider kommen Umlaute die per UTF-8 codiert wurden weder dort korrekt an, noch
procedure DoRequest;
var req : IXMLHTTPRequest; Adresse, xmlstring : string; begin req := CoXMLHTTP.Create; // Interface erzeugen Adresse := 'https://www.irgendwo.de/xmlinterface.php?getDaten'; xmlstring := '<?xml version="1.0" encoding="utf-8"?><xmlinterface></xmlinterface>'; req.open('POST', Adresse, False, {Username} EmptyParam, {Passwort} EmptyParam); req.send(xmlstring); // Anfrage an Server senden und Antwort abwarten Memo1.Lines.Text := req.responseText; end; erhalte ich unter responseText die Umlaute korrekt UTF-8 codiert. Aus einem c3 bc (UTF-8 für ü) wird direkt ein ü, was so natürlich nicht gewollt ist! Wo kann man hier ansetzen? Viele Grüße Peter |
AW: UTF-8 Problem bei IXMLHTTPRequest
Zunächst einmal solltest du in deinem Programmcode sicherstellen, dass die richtige Version von MSXML verwendet wird.
Nach meiner Erfahrung ist die Version 3 und früher so verbuggt, dass man sie nicht brauchen kann. Erst ab MSXML 4 SP2 funktioniert das Interface IXMLHTTPRequest richtig.
Delphi-Quellcode:
Das nächste ist, dass das Interface IXMLHTTPRequest mit WideStrings arbeitet.
// req := CoXMLHTTP.Create; // so nicht
try req := Createoleobject('Msxml2.XMLHTTP.4.0') as IXMLHTTPRequest; except on E:Exception do begin E.Message := 'MSXML 4.0 or higher requiered!'#13#10+E.Message; raise; end; end; Das heisst, dass auch Umwandlungen in verschiedene Zeichensätze (UTF-8,ISO 8859, ASCII,...) übernommen werden. Mit Delphi 4 bist du etwas benachteiligt in Bezug auf Widestrings, aber zumindest gibt es den Datentyp schon mal. Für Dich heisst das, du darf selbst keine Umwandlung in UTF-8 vornehmen. |
AW: UTF-8 Problem bei IXMLHTTPRequest
Hallo shmia,
das Problem scheint sich so wirklich lösen zu lassen. Vielen Dank für die hlfreiche Unterstützung und viele Grüße Peter. |
AW: UTF-8 Problem bei IXMLHTTPRequest
ich habe da mal ne frage kann mir da jemand sagen wie ich da die Methode Post anwende?
Das Vormular hat folgende Eingabe Felder Id="Name" "Vorname" usw. müssen diese in req.send oder in req.open angegeben werden"? wie ist der xmlstring aufgebaut? req.open('POST', Adresse, False, {Username} EmptyParam, {Passwort} EmptyParam); req.send(xmlstring); // Anfrage an Server senden und Antwort abwarten Memo1.Lines.Text := req.responseText; |
AW: UTF-8 Problem bei IXMLHTTPRequest
Es ist doch schön dasman hier keine Antwort bekommt
Oder ist doch noch einer da der mir erklären kann wie ich Post senden kann? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 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