NetHTTPClient - application/json - hibás karakterkódolás
2021-06-25T19:02:04+02:00
2021-06-26T10:50:45+02:00
2022-08-19T02:22:07+02:00
Rogerrr
Sziasztok!

Az alábbi eljárással szeretnék json-értéket olvasni, de sajnos a Memo-ba visszatért érték hibásan jelenik meg. A mostani kérdésfelvetésem előtt igyekeztem utánajárni a problémának, de sajnos nem jártam sikerrel. Az alábbi oldalról Nameday API szeretném kiolvasni az aktuális névnapot.

var parametres : TStringStream; begin NetHTTPClient1.ContentType := 'application/json'; NetHTTPClient1.AcceptEncoding := 'UTF-8'; parametres:=TStringStream.Create('[{"country": "hu"}, {"country": "hu"}]', TEncoding.UTF8); try Memo1.Text := NetHTTPClient1.Post('https://nameday.abalin.net/yesterday?country=hu', parametres).ContentAsString(TEncoding.UTF8); finally parametres.Free; end;

Jelen helyzethez viszonyítva a tegnapi napot olvastam ki, hogy látszódjék a probléma. 
Iván név helyett az alábbit kapom Memo-ba:

{"status":"Success","data":{"month":6,"day":24,"namedays":{"hu":"Iv\u00e1n"}}}

Nem tudom, mit kéne még állítanom, hogy helyesen jelenjen meg, ha valaki tudna benne segíteni, azt nagyon megköszönném! (Delphi 10.2)

(Igen, tudom, hogy esetleg StringReplace-el lehetne variálni, de ha lehet, ezt szeretném elkerülni.)


Tisztelettel: Rogerrr
Mutasd a teljes hozzászólást!
Az E1 a kis "á" betű kódja. Nincs a JSON válasszal semmi probléma; a formátum megengedi, hogy tetszőleges karaktert Unicode escape szekvenciával fejezz ki. Ha nem kézi módszerrel próbálod feldolgozni a választ, hanem használsz valami könyvtárat, akkor pont ugyanúgy az "Iván" sztringet fogod megkapni, mintha escape nélkül lett volna a válaszban.
Mutasd a teljes hozzászólást!

abcd