Local server, translation in Web interface correct, translation via API request bad

Windows 10 LTSC, Python 3.10, no docker, EN to FR

In the localhost:5000 interface, for the EN sentence
Signal monitoring and fault recognition​
I get the correct translation
Surveillance des signaux et reconnaissance des défauts

But from an API request from Autohotkey (simplified)
s := “Signal monitoring and fault recognition​”
URL := “http://127.0.0.1:5000/translate
method := “POST”
body := ‘{“q”:"’ . s . ‘“,“source”:“en”,“target”:“fr”,“format”:“text”,“alternatives”:3,“api_key”:”"}’
WHR.Open(method, URL, false)
WHR.SetRequestHeader(“Content-Type”, “application/json”)
WHR.Send(body)
WHR.WaitForResponse()
ResponseRaw := WHR.ResponseText

I get the translation
Signal surveillance et défaut reconnaissance

Which is incorrect.
Why this difference?

Check your encoding? Perhaps the request is not being sent with the same string encoding.