AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Rest Server Umlaute Indy
Thema durchsuchen
Ansicht
Themen-Optionen

Rest Server Umlaute Indy

Ein Thema von ScharfeMietze · begonnen am 27. Jan 2016 · letzter Beitrag vom 29. Jan 2016
Antwort Antwort
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#1

Rest Server Umlaute Indy

  Alt 27. Jan 2016, 13:22
Ich habe eine Frage.

Ich habe mir einen Rest Server erstellt, den ich via http anspreche. Es sind die Grundeinstellungen die Seattle durch seinen Assisenten erstellt.

Zu Testzwecken frage ich ein einfaches Memo ab mit Umlauten.
mmo2.lines.add('üöäpüß???ß++++----'); Siehe da es kommt nur Kauderwelsch rum. Eine Abfrage mit Chrome ergibt.

Code:
{"result":["\u00FC\u00F6\u00E4p\u00FC\u00DF???\u00DF++++----\r\n"]}
Delphi-Quellcode:
function TServerMethods1.Index: string;
begin
Result:= frmServer.mmo2.Lines.Text;
end;
Ist die function die das Ergebnis erzeugt.

Ich hätte nun gern im Browser eine Anzeige in der die Umlaute richtig dargestellt werden.
Kann mir da einer helfen?

Gruß
SM

Geändert von ScharfeMietze (27. Jan 2016 um 13:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Rest Server Umlaute Indy

  Alt 27. Jan 2016, 13:52
Wieso Kauderwelsch?

Das ist ganz normales und vollkommen korrekt Codiertes JSON.
$2B or not $2B
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#3

AW: Rest Server Umlaute Indy

  Alt 27. Jan 2016, 14:10
Das ist schonmal ein Anfang. Danke für die Antwort.
Kann ich den Server auch überreden es nicht in Json zu senden, wen ich nur den einfachen Text brauche?

Json habe ich schon mal geparst, müsste ich Notfalls also hinbekommen.

Gruß
SM

edit: Da es zum Thema gehört.

Delphi-Quellcode:
Uses System.JSON;

var
  s: string;
  LJSONObject: TJSONObject;
begin
 s:= '{"result":["\u00FC\u00F6\u00E4p\u00FC\u00DF???\u00DF++++----\r\n"]}';
   LJSONObject := nil;
  try
    LJSONObject := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(s), 0) as TJSONObject;
    mmo1.Lines.Add(LJSONObject.ToString);
  finally
    LJSONObject.Free;
  end;
end;
Ausgabe
Delphi-Quellcode:
{"result":["üöäpüß???ß++++----
"]}
Vorteil wäre ich bräuchte mir keine Gedanken mehr um weitere Codierungen zu machen.

Geändert von ScharfeMietze (27. Jan 2016 um 14:26 Uhr)
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#4

AW: Rest Server Umlaute Indy

  Alt 29. Jan 2016, 10:25
Da es halbwegs zum Thema gehört stelle ich die Frage hier mit

Ich muss ja Server seitig die Ausgabe auch in Json verpacken.

nun habe ich mir mal ein Example angesehen

http://docwiki.embarcadero.com/Libra...Object.AddPair
Delphi-Quellcode:
uses System.json;
 
var
  Obj, ObjCons, ObjIpp: TJSONObject;
 
begin
  Obj := TJSONObject.Create;
  try
    ObjIpp := TJSONObject.Create;
    ObjIpp.AddPair('ipp', TJSONNumber.Create(1122368));
 
    ObjCons := TJSONObject.Create;
    ObjCons.AddPair('decision', 'NA');
    ObjCons.AddPair('idPatient', ObjIpp);
    ObjCons.AddPair('idStructure', TJSONNumber.Create(300000000023887));
 
    Obj.AddPair('consentement', ObjCons);
    Memo1.Lines.Add(Obj.ToJSON);
  finally
    Obj.Free;
  end;
 
end;
Funkpionieren tut es. Die Frage ist, warum brauche ich manchmal ein Create/Free und manchmal nicht? Kann mir das jemand erklären?

Gruß
SM
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Rest Server Umlaute Indy

  Alt 29. Jan 2016, 10:35
Weil die Members im destructor des JSON-Objekts freigegeben werden brauchst Du Referenzen auf diese nicht selber verwalten.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Rest Server Umlaute Indy

  Alt 29. Jan 2016, 10:47
Diese Objekte haben eine Owner Beziehung die gesetzt wird, wenn du diese zusammenbaust (Add und AddPair ).

Kleiner Tipp:

Erstelle dir für alle JSON Nachrichten eigene Klassen. Diese erzeugst du dann aus den internen Klassen, serialisierst die Json-Nachricht-Instanz und ab damit.

Das geht dann wesentlich strukturierter
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#7

AW: Rest Server Umlaute Indy

  Alt 29. Jan 2016, 12:55
Ahhhhhhhhhhh
THX SM
  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 17:37 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