Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: HtmlHttpRequest Kodowanie Part 2
Forum PHP.pl > Forum > XML, AJAX
g00fy
Znalazłem coś takiego :http://www.twinhelix.com/javascript/htmlhttprequest/
uzywam tego do ladowania podstrony w divie.
niestety gdy wysylam formularz (post) kodowanie z polskimi literkami wali sie i wychodza dziwne ślaczki.
probowalem juz iconv etc , ujednolicania content-type i nic.

any other ideas?

jakby ktos chcial zobaczyc o co chodzi to http://fz.g00fy.nq.pl
anopak
hmm u mnie działa poprawnie...

co do tego jak to powinno być to poprostu w php w header należy dać odpowiedni charset np. iso-8859-2, było o tym na forum sporo razy smile.gif
g00fy
ale pisze dlatego ze to nie dziala winksmiley.jpg
(header) - nic nei daje

ktos mowil o zmienieniu kodowania w bazie danych ;/
tylko ze gdy dodaje newsy z panelu (bez ajaxa) wszystko dziala poprawnie;/
anopak
jeżeli dodajesz do bazy to musisz tekst otrzymany z ajaxa przekonwertować na iso-8859-2, możesz do tego wykorzystać iconv bądź mb_convert_variables
g00fy
niestety te funkcje zwracają mi błąd.
jakiś pomysł ;>?
anopak
brak zainstalowanych tych funkcji w PHPie... na upartego można to zrobić za pomocą chr() i str_replace(), ale to jest troche mijanie się z celem - lecz w takim wypadku chyba jedyny sposób....
g00fy
tzn iconv jest zainstalowane ale i tak zwraca blad ;/ dunno why...
a gdy dodaje posty z strony nie zawierajacej htmlhttprequest to wsio dziala poprawnie;/

znalazlem taka funkcje

  1. <?
  2. function unescape($str) {
  3. $str = rawurldecode($str);
  4. preg_match_all("/(?:%u.{4})|&#x.{4};|&#d+;|.+/U",$str,$r);
  5. $ar = $r[0];
  6. foreach($ar as $k=>$v) {
  7.  if(substr($v,0,2) == "%u")
  8.  $ar[$k] = iconv("UCS-2","UTF-8",pack("H4",substr($v,-4)));
  9.  elseif(substr($v,0,3) == "&#x")
  10.  $ar[$k] = iconv("UCS-2","UTF-8",pack("H4",substr($v,3,-1)));
  11.  elseif(substr($v,0,2) == "&#") {
  12.  $ar[$k] = iconv("UCS-2","UTF-8",pack("n",substr($v,2,-1)));
  13.  }
  14. }
  15. return join("",$ar);
  16. }
  17.  
  18. ?>

ale nie zamienia ona wszystkich znakow jedynie czesc...


ok juz wiem o co chodzi
smile.gif

trzeba dodac przed ta funkcja jeszcze jedno iconv i bedzie dzialac

oto przyklad smile.gif :


  1. <?
  2.  
  3. echo unescape(iconv('',"UTF-8",$num1));
  4.  
  5. ?>
g00fy
w końcu znalazłem winowajcę winksmiley.jpg
to js w którym stringi wysylane są w formacie unicode

zamiast funkcji escape powinno użyć się encodeURIComponent() dzięki któremu wszystko będzie normalne i nie potrzeba będzie dodatkowych zmian w php tongue.gif

to jakby ktos potrzebowal na przyslosc tongue.gif
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.