Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php + ajax] Problem z kodowaniem
Forum PHP.pl > Forum > PHP
kosheen2k
Witajcie wszyscy... dawno mnie tu nie było... (bo nie było czasu biggrin.gif)

Zakładam kolejny temat na temat kodowania... przeszukałem forum, ale nie ma nic nt. mojego problemu.

Mianowicie mam coś takiego:

1. Formularz główny -> proste 2 inputy + textarea
2. Całość jest wysyłana za pomocą prototype'a przy pomocy Ajax.Request metodą post do pliku data.php
3. Wszystko ładnie pięknie przesyła, foreach dla $_POST w pliku data.php działa - wyświetla wszystkie przesłane zmienne poprzez post i gitarka, lecz...
4. Gdy dochodzi do przenoszenia polskich znaków robią się krzaki

I teraz... uprzedzam wszelkie odpowiedzi związane z programem, w którym pisze - tak ustawiłem kodowanie na UTF-8 -> wpisałem wszędzie ładne nagłówki meta:
  1. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>


nawet probowałem:
  1. <?php
  2. header('Content-type: text/html; charset=UTF-8');
  3. ?>

w jednym(index.php - główny z formularzem) i drugim pliku (data.php) i to nic nie daje...

ale, jest jeszcze coś:

jak wpisałem w pliku data.php polskie znaczki śłćżćźżóćę to są wyświetlane dobrze, a te przesłane POST'em nie...
probowałem już iconv, ale też nic nie pomogło... shit happens ;/
Ma ktoś jakieś pomysły bo ja odpadam... proszę o pomoc.

Jeśli ktoś chce to obejrzeć to jest pod adresem: http://ncore.wnm.pl/owned/talkback/

Pozdrawiam, kosheen2k.
netmare
  1. function sendForm() {
  2. var txtNick = $('nick').value;
  3. var txtMail = $('email').value;
  4. var txtCnt = $('text').value;
  5. var params = 'nick='+txtNick+'&email='+txtMail+'&text='+txtCnt+'';
  6.  
  7.  
  8. new Ajax.Request("data.php", {
  9. method: 'post',
  10. asynchronous: true,
  11. postBody: params,
  12. onSuccess: function(t) {
  13. reloadContent(t.responseText);
  14. }
  15. });
  16. }

Jest wg mnie przyczyną tych krzaków.
Nie znam się na JS, ani na Ajaxie nic a nic, ale powinieneś chyba przed prezpostowaniem przerobić treść na url encoded, bo inaczej treść POST'a wysyłanego do data.php wygląda tak:

nick=kosheen2k&email=eduardo@kosheen.frytki.smaz.one.pl&text=asdasdasdasdasdasdassdasdasd tresc testowa :e ąśćżśąłśóęóżćóąę

a chyba nie powinna tak wyglądać, zwłaszcza że ten request posta definiuje to jako:

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

Edit:
  1. function URLEncode (clearString) {
  2. var output = '';
  3. var x = 0;
  4. clearString = clearString.toString();
  5. var regex = /(^[a-zA-Z0-9_.]*)/;
  6. while (x < clearString.length) {
  7. var match = regex.exec(clearString.substr(x));
  8. if (match != null && match.length > 1 && match[1] != '') {
  9. output += match[1];
  10. x += match[1].length;
  11. } else {
  12. if (clearString[x] == ' ')
  13. output += '+';
  14. else {
  15. var charCode = clearString.charCodeAt(x);
  16. var hexVal = charCode.toString(16);
  17. output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
  18. }
  19. x++;
  20. }
  21. }
  22. return output;
  23. }


Zaczerpnięte z: http://cass-hacks.com/articles/code/js_url_encode_decode/
kosheen2k
Co jak co winksmiley.jpg używałem encode z prototype'a i śmiga winksmiley.jpg ale ta wydaje się bardziej przyjazna winksmiley.jpg a że jej użyłem i netmare mi pomogłeś pkt - pomógł dla Ciebie.

Pozdrawiam, kosheen2k.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.