anchor.diff:        s := Copy(AValue, i, j-i);
         // See RFC 1866 section 8.2.1. TP
         s := ReplaceAll(s, '+', ' ');  {do not localize}
  -      ARequestInfo.Params.Add(TIdURI.URLDecode(s, LEncoding));
  +      // ----------------------------
  +      // Free Pascal 3.0.4 workaround: use MyURLDecode and UTF8
  +      // ARequestInfo.Params.Add(TIdURI.URLDecode(s, LEncoding));
  +      ARequestInfo.Params.Add(MyURLDecode(s, IndyTextEncoding_UTF8));
  +      // ----------------------------
         i := j + 1;
       end;
     finally
  
positive.code: end;
  
  {$IFDEF FPC}
  // based on https://stackoverflow.com/questions/24861793
  // using Indy IdCustomHTTPServer rev 5498
  procedure MyDecodeAndSetParams(ARequestInfo: TIdHTTPRequestInfo);
  var
    i, j : Integer;
    AValue, s: string;
    LEncoding: IIdTextEncoding;
  begin
    AValue := ARequestInfo.UnparsedParams;
    // Convert special characters
  
negative.code:     // which charset to use for decoding query string parameters.  We
      // should not be using the 'Content-Type' charset for that.  For
      // 'application/x-www-form-urlencoded' forms, we should be, though...
      // Free Pascal 3.0.4 workaround
      // LEncoding := CharsetToEncoding(ARequestInfo.CharSet);
      i := 1;
      while i <= Length(AValue) do
      begin
  