AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Webservice

Ein Thema von InschenierSB · begonnen am 25. Apr 2018 · letzter Beitrag vom 17. Mai 2018
Antwort Antwort
Seite 9 von 9   « Erste     789   
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#81

AW: Webservice

  Alt 14. Mai 2018, 08:39
Bitte prüfen ob Delphi 6 schon die UTF-8 Konvertierungsroutinen kennt:
http://docwiki.embarcadero.com/RADSt...erungsroutinen

Geändert von TiGü (14. Mai 2018 um 10:43 Uhr)
  Mit Zitat antworten Zitat
InschenierSB

Registriert seit: 25. Apr 2018
Ort: Regensburg
39 Beiträge
 
#82

AW: Webservice

  Alt 14. Mai 2018, 08:55
Bitte prüfen ob Delphi 6 schon die UTF-8 Konvertierungsroutinenkennt:
http://docwiki.embarcadero.com/RADSt...erungsroutinen
Okay und wie mache ich das genau?! Ich bin auf deinen Link gegangen und habe gleich die erste Funktion ausgewählt. Die Funktion scheint es zu geben: function AnsiToUtf8(...).
Der Rückgabewert ist dann UTF8String....
  Mit Zitat antworten Zitat
InschenierSB

Registriert seit: 25. Apr 2018
Ort: Regensburg
39 Beiträge
 
#83

AW: Webservice

  Alt 15. Mai 2018, 09:59
Hallo hier ein kurzes Statusupdate,

Wie es scheint kann man die Konvertierungsroutinen
http://docwiki.embarcadero.com/RADSt...erungsroutinen
nicht unter Delphi 6 implementieren, sondern erst ab höheren Versionen (z.B. Delphi 2010). Leider können wir mit dem Projekt nicht auf eine Höhere Version gehen, da dies abseits vom Webservice zu umfangreich ist.



Zitat:
Du versendest aber einen String der entweder ANSI (z.B bei Delphi 6) oder UTF32 (z.B. ab Delphi 2009 und neuer) ist.
Und hier IdHTTP1.Request.ContentType:='application/soap+xml;charset=UTF-8'; behauptest du gegenüber dem Empfänger, dass es tatsächlich UTF8 sei (was aber definitiv falsch ist).

Fatal an ANSI vs. UTF8 dass die Standard-Zeichen exakt gleich codiert sind und man sich beim Testen (natürlich mit den Standard-Zeichen) in eine falsche Sicherheit wiegt.
Ist es sicher das Delphi 6 unter Verwendung von IdHttp nur ANSI Strings versenden kann oder gibt es noch andere Möglichkeiten, da dies nicht mehr Zeitkonform ist?
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#84

AW: Webservice

  Alt 15. Mai 2018, 10:20
Wir benutzen AnsiToUTF8 in D6 für ein altes Webserver-CGI-Projekt und das geht ganz gut. Dort werden Tokens in einer UTF8 codierten HTML-Vorlagen-Datei ersetzt, damit die üblichen Verdächtigen (Umlaute, scharfes S usw.) in den Text kommen und das klappt.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#85

AW: Webservice

  Alt 15. Mai 2018, 12:44
Da es sich bei utf8 um 8Bit-Zeichen(folgen) handelt, kannst Du problemlos mit Ansi-Strings arbeiten. Du mußt "nur" für die richtige Kodierung sorgen falls AnsitUtf8 in D6 nicht vorhanden ist, bastelst Du es Dir halt selber:

Delphi-Quellcode:
function MyAnsitoUTF8(instr:ansistring):ansistring;
var
  i : integer;
begin
  for i:=1 to length(instr) do
  case instr[i] of
    'ä' : result:=result+#$C3+#$A4;
    .....
    else
      result:=result+instr[i];

  end;
end;
Wobei Du natürlich noch die Codepage der Ansi-Codierung beachten mußt.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
InschenierSB

Registriert seit: 25. Apr 2018
Ort: Regensburg
39 Beiträge
 
#86

AW: Webservice

  Alt 17. Mai 2018, 06:39
Da es sich bei utf8 um 8Bit-Zeichen(folgen) handelt, kannst Du problemlos mit Ansi-Strings arbeiten. Du mußt "nur" für die richtige Kodierung sorgen falls AnsitUtf8 in D6 nicht vorhanden ist, bastelst Du es Dir halt selber:

Delphi-Quellcode:
function MyAnsitoUTF8(instr:ansistring):ansistring;
var
  i : integer;
begin
  for i:=1 to length(instr) do
  case instr[i] of
    'ä' : result:=result+#$C3+#$A4;
    .....
    else
      result:=result+instr[i];

  end;
end;
Wobei Du natürlich noch die Codepage der Ansi-Codierung beachten mußt.

Gruß
K-H

Guten Morgen,
vielen Dank an Jumpy und p80286, also es funktioniert unter Delphi 6. Die Funktion zum konvertieren ist schon in Delphi 6 enthalten.
Nachfolgend ein Auszug aus dem Code, falls irgendwann mal andere Leute vor dem gleichen Problem stehen (über die Loop werden nur die einzelnen Elemente der Stringlist übergeben).
Grüße Sebastian
Delphi-Quellcode:
  //Ausgabe zusammenstellen
  HTTP_Stream.Position:=0;

  my_Response_utf8.LoadFromStream(HTTP_Stream);

   // Loop für die StringList Antwort
  For e:= 0 to my_Response_utf8.Count -1 do
  begin
        my_Response_Ansi.Add(utf8toansi(my_Response_Utf8[e]));
  end;

  Memo1.Lines.AddStrings(my_Request_Ansi);
  Memo2.Lines.AddStrings(my_Response_Ansi);
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 9 von 9   « Erste     789   


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 03:16 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