![]() |
Rest Server Umlaute Indy
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.
Delphi-Quellcode:
Siehe da es kommt nur Kauderwelsch rum. Eine Abfrage mit Chrome ergibt.
mmo2.lines.add('üöäpüß???ß++++----');
Code:
{"result":["\u00FC\u00F6\u00E4p\u00FC\u00DF???\u00DF++++----\r\n"]}
Delphi-Quellcode:
Ist die function die das Ergebnis erzeugt.
function TServerMethods1.Index: string;
begin Result:= frmServer.mmo2.Lines.Text; end; Ich hätte nun gern im Browser eine Anzeige in der die Umlaute richtig dargestellt werden. Kann mir da einer helfen? Gruß SM ;) |
AW: Rest Server Umlaute Indy
Wieso Kauderwelsch?
Das ist ganz normales und vollkommen korrekt Codiertes JSON. :stupid: |
AW: Rest Server Umlaute Indy
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:
Ausgabe
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;
Delphi-Quellcode:
Vorteil wäre ich bräuchte mir keine Gedanken mehr um weitere Codierungen zu machen.
{"result":["üöäpüß???ß++++----
"]} |
AW: Rest Server Umlaute Indy
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 ![]()
Delphi-Quellcode:
Funkpionieren tut es. Die Frage ist, warum brauche ich manchmal ein Create/Free und manchmal nicht? Kann mir das jemand erklären?
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; Gruß SM;) |
AW: Rest Server Umlaute Indy
Weil die Members im destructor des JSON-Objekts freigegeben werden brauchst Du Referenzen auf diese nicht selber verwalten.
|
AW: Rest Server Umlaute Indy
Diese Objekte haben eine Owner Beziehung die gesetzt wird, wenn du diese zusammenbaust (
Delphi-Quellcode:
und
Add
Delphi-Quellcode:
).
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 ;) |
AW: Rest Server Umlaute Indy
Ahhhhhhhhhhh
THX SM;) |
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