IdHTTP1->Post i problem z polskimi znakami

0

Witam,
Poniższym kodem wysyłam zapytanie do skryptu PHP, wszystko jest dobrze dopóki nie pojawiają się polskie znaki.

TIdMultiPartFormDataStream *Send = new TIdMultiPartFormDataStream();

	Send->AddFormField("instrukcja", "ĄŚĆŁ");

	IdHTTP1->Post("http://www.--.pl/", Send);

Moje pytanie - jak obsłyżyć polskie znaki, skrypt PHP jest na pewno dobrze napisany - przyjmuje znaki UTF8

0

ustaw encoding w IdHTTP1 na utf8

0

Dodałem:
IdHTTP1->Request->ContentEncoding = "UTF-8";
Niestety bez pomyślnego rezultatu.

0

A wpisujesz w jakim kodowaniu?
W
IdHTTP1->Request->ContentEncoding
masz wpisać to kodowanie które używasz a nie to które chcesz aby dotarło do PHP, PHP sam to przekoduje na swój standard.

0

Więc próbuje:

  • ANSII - nie działa - wysyłam ĄĆŃŁ i dostaje ACNL
  • windows-1250 - jw
  • ASCII - jw
    Kurcze mecze się z tym i nie wiem czemu nie działa - przecież to taka banalna rzecz:|
0

Może zamiast tego

Send->AddFormField("instrukcja", "ĄŚĆŁ");

użyj tego: Send->AddFormField("instrukcja", "%C4%84%C5%9A%C4%86%C5%81");

0

Działam na takim kodzie wywoływanym z przycisku:

	IdHTTP1->Request->UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; pl-PL; rv:1.7.6) Gecko/20050226 Firefox/1.0.1";
	IdHTTP1->Request->ContentType = "text/html";
	IdHTTP1->Request->ContentEncoding = "ASCII";
	TIdMultiPartFormDataStream *Send = new TIdMultiPartFormDataStream();
	Send->AddFormField("test", Edit1->Text);
	Memo1->Text = IdHTTP1->Post("http://www.--.pl/c++/", Send);

Do Edit wpisuje polskie znaki, po naciśnięciu przycisku tekst wraca przez skrypt PHP na serwerze do Memo1. Niestety polskie znaki nie - Ą => A, Ń => N itd
Próbowałem IdHTTP1->Request->ContentEncoding ustawić tak jak wcześniej pisałem niestety nic. Środowisko CodeGear™ C++Builder® 2009.
Co może być nie tak?

0

Daj tak:

IdHTTP1->Request->ContentEncoding = "UTF-8";

I to co odbierzesz z textboxa daj do funkcji urlencode i potem wyślij.

0

Wprowadzone zmiany:

		TIdMultiPartFormDataStream *Send = new TIdMultiPartFormDataStream();
		Send->AddFormField("test", TIdURI::URLEncode(Edit1->Text));

		IdHTTP1->Request->AcceptLanguage = "pl";
		IdHTTP1->Request->UserAgent = "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT)";
		IdHTTP1->Request->ContentType = Send->RequestContentType;
		IdHTTP1->Request->ContentEncoding = "UTF-8";

		Memo1->Text = IdHTTP1->Post("http://www.--.pl/c++/", Send);

Dodatkowo zamieszczam kod skryptu PHP:

<?
    header('Content-type: text/html; charset=utf-8');
    echo $_POST['test'];
?>

W odpowiedzie w memo zamiast polskich znaków dostaje znak zapytania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1