AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi UTF-8 Problem bei IXMLHTTPRequest
Thema durchsuchen
Ansicht
Themen-Optionen

UTF-8 Problem bei IXMLHTTPRequest

Ein Thema von PeterRettig · begonnen am 21. Okt 2010 · letzter Beitrag vom 23. Okt 2011
Antwort Antwort
PeterRettig

Registriert seit: 4. Jun 2003
Ort: Schleiz
65 Beiträge
 
Delphi 4 Client/Server
 
#1

UTF-8 Problem bei IXMLHTTPRequest

  Alt 21. Okt 2010, 10:43
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:
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;
Leider kommen Umlaute die per UTF-8 codiert wurden weder dort korrekt an, noch
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
Warum kann man Atommüll nicht auf dem Mars lagern?
Mars bringt verbrauchte Energie sofort zurück!
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

AW: UTF-8 Problem bei IXMLHTTPRequest

  Alt 21. Okt 2010, 11:38
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:
// 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 nächste ist, dass das Interface IXMLHTTPRequest mit WideStrings arbeitet.
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.
Andreas
  Mit Zitat antworten Zitat
PeterRettig

Registriert seit: 4. Jun 2003
Ort: Schleiz
65 Beiträge
 
Delphi 4 Client/Server
 
#3

AW: UTF-8 Problem bei IXMLHTTPRequest

  Alt 21. Okt 2010, 14:08
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.
Warum kann man Atommüll nicht auf dem Mars lagern?
Mars bringt verbrauchte Energie sofort zurück!
  Mit Zitat antworten Zitat
Gameboy

Registriert seit: 26. Mai 2010
5 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: UTF-8 Problem bei IXMLHTTPRequest

  Alt 4. Feb 2011, 00:32
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;
  Mit Zitat antworten Zitat
Gameboy

Registriert seit: 26. Mai 2010
5 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: UTF-8 Problem bei IXMLHTTPRequest

  Alt 23. Okt 2011, 22:17
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?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz