mam skrypt, który wysyła formularz do pliku PHP. Ten plik go odbiera w poprawny sposób, o ile w formularzu nie wystąpiła litera “ó”. Ta bowiem zamieniana jest (inne pozostałe polskie znaki nie) na kod: ó PHP odbiera odpowiednie zmienne, jednak myli go znak “&” i uważa, że zaczyna się w tym miejscu nowa zmienna… tymczasem wcale tak nie jest. Np. wyraz “które” przesłany: “?tresc=które” - wartość zmiennej “tresc” u mnie to samo “kt”.
Jeżeli wysyłając przez POST nadal będziesz miał problem spróbuj po stronie klienta kodować tekst za pomocą base64, a w PHP na serwerze użyć base64_decode. Problem z polskimi znakami rozwiązany.
Właśnie używam POST’a… Ampersand jest mimo to nie do pokonania… A wiem, że przesyła się w porządku - zrobiłem nawet skrypt, który wyświetlił mi wszystkie zmienne - przesłałem POSTem: “?test=wartosc&&&&kolejna=cos” zwróciło mi to obecność dwóch zmiennych - “test” (o wartości "wartosc) i “kolejna” (wartość “cos”)…
Wartości parametrów przekazywanych zarówno przez POST jak i GET (u Ciebie) należy zakodować funkcją urlencode albo encodeURIComponent (to są funkcje JavaScript).
Kompletnie zapomniałem o takim potraktowaniu zmiennej… Bawię się trochę ajax’em… i zapytania faktycznie wysyłam POST’em, jednak tworzę je nie poprzez tradycyjne formularze, ale w JavaScripcie, przez co kod do pewnego momentu faktycznie przypomina GET’a…
Ja od lat stosuję funkcję encodeURIComponent (w tutorialach używają najczęściej urlencode, ale ja uważam, że powinno się używać właśnie encodeURIComponent) do zakodowania przesyłanych danych formularza (nazwy i wartości zmiennych) - po stronie serwera (PHP) nic z tym już nie trzeba robić. Dodatkowo strony koduję w UTF-8 i tylko czasami w PHP muszę pamiętać o pewnych sprawach związanych z “dziwnym” wsparciem UTF-8 właśnie, a tak to komunikacja między JS a PHP działa zupełnie bezproblemowo (na co dowodem jest np. ten projekt: http://programistrz.pl/projekty/wikipedia/, który intensywnie przesyła dane, w których są używane nie tylko polskie ogonki, jak i inne znaki międzynarodowe).