The Content-Type: application/x-www-form-urlencoded; charset=UTF-8 HTTP header has no meaning in a GET request, only in a POST request.
Embarcadero's REST framework does not handle non-ASCII charsets correctly.  Even though it uses Indy internally, it does not utilize Indy's charset handling.  As such, in order to send UTF-8 encoded data, you have to either:
- encode a - UnicodeStringto UTF-8 manually and then put the UTF-8 octets back into a- UnicodeStringso- TRESTRequestcan send them:
 - UnicodeString EncodeAsUtf8(const UnicodeString &s)
{
    UTF8String utf8 = s;
    UnicodeString ret;
    ret.SetLength(utf8.Length());
    for (int x = 1; x <= utf8.Length(); ++x)
        ret[x] = (WideChar) utf8[x];
    return ret;
}
...
RESTRequest->ResetToDefaults();
RESTRequest->Method = rmGET;
RESTRequest->Resource = L"XXX/collection1" + Form1->teReuqestHandler->Text;
RESTRequest->AddParameter(L"q", EncodeAsUtf8(Form1->teQuery->Text), TRESTRequestParameterKind::pkGETorPOST);
String str1 = RESTRequest->GetFullRequestURL();
RESTRequest->Execute();
 
- encode the parameter data yourself: - #include <IdGlobal.hpp>
#include <IdURI.hpp>
RESTRequest->ResetToDefaults();
RESTRequest->Method = rmGET;
RESTRequest->Resource = L"XXX/collection1" + Form1->teReuqestHandler->Text;
RESTRequest->AddParameter(L"q", TIdURI::ParamsEncode(Form1->teQuery->Text, IndyTextEncoding_UTF8), TRESTRequestParameterKind::pkGETorPOST, TRESTRequestParameterOptions() << TRESTRequestParameterOption::poDoNotEncode);
String str1 = RESTRequest->GetFullRequestURL();
RESTRequest->Execute();
 - Or: - #include <IdGlobal.hpp>
#include <IdURI.hpp>
RESTRequest->ResetToDefaults();
RESTRequest->Method = rmGET;
RESTRequest->Resource = L"XXX/collection1" + Form1->teReuqestHandler->Text + L"?q={q}";
RESTRequest->AddParameter(L"q", TIdURI::ParamsEncode(Form1->teQuery->Text, IndyTextEncoding_UTF8), TRESTRequestParameterKind::pkURLSEGMENT, TRESTRequestParameterOptions() << TRESTRequestParameterOption::poDoNotEncode);
String str1 = RESTRequest->GetFullRequestURL();
RESTRequest->Execute();
 
Otherwise, switch to Indy's TIdHTTP component:
UnicodeString Response = IdHTTP1->Get(L"http://server/XXX/collection1" + Form1->teReuqestHandler->Text + L"?q=" + TIdURI::ParamsEncode(Form1->teQuery->Text, IndyTextEncoding_UTF8));