[SOLVED] - IdHTTP.Post and JSON - Charset lazarus / 38-Networking and Web Programming ---------------------------------------------------------------------- DanishMale · 2016-06-06 02:48 I am getting nuts now after being fighting this issue for sometime.... I send a request to a homepage in JSON format and receive as such also a result, however, it doesnot return as expected  Comes like this: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i {"d":"{\"programId\":00000000,\"startDateTime\":\"0000-00-00 00:00\",\"endDateTime\":\"0000-00-00 00:00\",\"programTitle\":\"Briternes bedste bageri 2\",\"longDescription\":\"Britisk serie fra 2013 Dommerne ser til mens deltagerne fra omr?derne omkring London dyster, hvor de alle m?rker presset, n?r de skal bage et stykke bagv?rk, der ikke er s? simpelt, som det ser ud. Kageeksperten Mich Turner og br?deksperten Peter Sidwell er p? jagt efter Storbritanniens bedste bageri. Bagerier fra hele landet konkurrerer i en r?kke konkurrencer, som handler om at f? mundvandet til at l?be hos dommerne og seerne. P? vejen ser serien ogs? n?rmere p? bagekunsten og alle dens l?kre former og farver.\",\"c hannelLogo\":\"/images/channels/large/V_27.png\",\"persons\":\"\",\"ep isode\":\"Afsnit: 23 / \",\"season\":\"S?son: 2\",\"widescreen\":\"Billedformat: \",\"sound\":\"Lyd: \",\"productionYear\":\"Produktions?r: \",\"rerun\":\"\",\"premiere\": \"\",\"hd\":\"\",\"liveEvent\":\"\",\"genre\":\"Genre: 06\",\"isMovie\":false,\"movieImage\":\"\"}"} Expected was this: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i {"d":"{\"programId\":00000000,\"startDateTime\":\"0000-00-00 00:00\",\"endDateTime\":\"0000-00-00 00:00\",\"programTitle\":\"Briternes bedste bageri 2\",\"longDescription\":\"Britisk serie fra 2013 Dommerne ser til mens deltagerne fra områderne omkring London dyster, hvor de alle mærker presset, når de skal bage et stykke bagværk, der ikke er så simpelt, som det ser ud. Kageeksperten Mich Turner og brødeksperten Peter Sidwell er på jagt efter Storbritanniens bedste bageri. Bagerier fra hele landet konkurrerer i en række konkurrencer, som handler om at få mundvandet til at løbe hos dommerne og seerne. På vejen ser serien også nærmere på bagekunsten og alle dens lækre former og farver.\",\"c hannelLogo\":\"/images/channels/large/V_27.png\",\"persons\":\"\",\"ep isode\":\"Afsnit: 23 / \",\"season\":\"Sæson: 2\",\"widescreen\":\"Billedformat: \",\"sound\":\"Lyd: \",\"productionYear\":\"Produktionsår: \",\"rerun\":\"\",\"premiere\": \"\",\"hd\":\"\",\"liveEvent\":\"\",\"genre\":\"Genre: 06\",\"isMovie\":false,\"movieImage\":\"\"}"} As it appears the special chars (æ, ø and å) in Danish are not wellformed !! The code I am using looks like this: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i procedure TForm1.FormCreate(Sender: TObject);var  HTTP: TIdHTTP;  RequestBody: TStringStream;  JSONstring: TJSONData;  JSONReceived: TJSONObject;begin  HTTP := TIdHTTP.Create(nil);  try    try      try      JSONString := GetJSON('{ programId :000000,programDate: "0000-00-00 00:00"}');        RequestBody := TStringStream.Create(JSONString.AsJSON);        HTTP.Request.UserAgent:= 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:38.9) Gecko/20100101 Goanna/2.0 Firefox/38.9 PaleMoon/26.2.2';      HTTP.Request.Accept := 'application/json';        HTTP.Request.ContentType := 'application/json';        HTTP.Request.ContentEncoding := 'UTF-8';        Memo1.Text := HTTP.Post('http://url_has_been_removed', RequestBody);        Memo1.Li nes.Add('--------------------------------------------------------');      Memo1.Text := Memo1.Text + RequestBody.DataString;        Memo1.L ines.Add('--------------------------------------------------------');        Memo1.Text := Memo1.Text + HTTP.ResponseText;      finally      RequestBody.Free;      end;    except      on E: EIdHTTPProtocolException do      begin        Memo1.Text :=  E.Message + Chr(13) + Chr(10) + E.ErrorMessage;      end;      on E: Exception do      begin        Memo1.Text :=   E.Message;      end;    end;  finally    HTTP.Free;  end;end;  Setup is: Windows 10 Pro x64 Lazarus 1.6 x64  SVN 51630 FPC 3.0.0 Indy 10.6 Any ideas ?? Thx in advance Solution from GetMem:   Memo1.Text := HTTP.Post('http://url_has_been_removed', RequestBody, IndyTextEncoding_UTF8); ---------------------------------------------------------------------- engkin · 2016-06-06 03:18 Just guessing, based on this link: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i   HTTP.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8;  HTTP.IOHandler.DefAnsiEncoding := IndyTextEncoding_UTF8; ---------------------------------------------------------------------- DanishMale · 2016-06-06 03:47 @ engkin tried your suggestion didn't change anything, still the same problem ---------------------------------------------------------------------- balazsszekely · 2016-06-06 04:17 @DanishMale FPC/Lazarus version? ---------------------------------------------------------------------- DanishMale · 2016-06-06 04:22 @ GetMem Setup is: Windows 10 x64 Lazarus 1.6 x64 SVN 51630 ... Date 2016-02-14 FPC:  3.0.0 Indy 10.6 aka my signature ---------------------------------------------------------------------- balazsszekely · 2016-06-06 04:31 Quote@DanishMale aka my signature  Sorry, I missed that! This works for me: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i uses IdGlobal//...Memo1.Text := HTTP.Post('http://url_has_been_removed', RequestBody, IndyTextEncoding_UTF8); ---------------------------------------------------------------------- DanishMale · 2016-06-06 04:36 WORKS LIKE A CHARM THX  One can't see the forest, just because all of those trees