Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » selves 02:49
 » Shark20 02:24
 » elliot_pl 02:23
 » Visar 01:29
 » MARC 01:19
 » bmiluch 01:13
 » Holyboy 01:09
 » Lukas12p 01:00
 » luckyluc 00:51
 » mo2 00:40
 » Chrisu 00:35
 » NWN 00:30
 » fenir 00:29
 » g5mark 00:20
 » DJopek 00:14
 » CiAsTeK 00:05
 » Zibi 00:04
 » Qjanusz 23:56
 » piszczyk 23:50
 » ReeX 23:35

 Dzisiaj przeczytano
 41109 postów,
 wczoraj 25974

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2024
A R C H I W A L N A   W I A D O M O Ś Ć
    

[Problem z IE + javascript] IE się wywala na polskich znakach , kubazzz 10/02/09 01:24
Skrypt jquery wrzuca coś takiego [z ajaxa bierze dane]
$('<div class="dane">'+dane+'</div>').prependTo('#pojemnik');

Strona jest w UTF-8, wszystkie skrypty maja dopisane charset=utf-8, skrypty php sa w utf-8,
ale kiedy w zmiennej 'dane' jest np litera ó [kraków] to dzieje się coś takiego: [IE dolepia coś takiego]

Krak?cript type="text/javascript">

Jeśli jest źdźbło to wyświetla się coś takiego:
?d?b?o

Pytanie - jak sobie z tym poradzić?

Trochę mieszałem w kodowaniach, ale wróciłem ostatecznie do UTF-8, nigdzie poza IE6 nie ma problemów.
PHP zwraca dane prawidłowo.

SM-S908

  1. Prześlij sobie dane JSONem , Conroy 10/02/09 10:49
    Nie wiem co powoduje ten problem i nie mam niestety czasu poszukać.

    Sugeruję abyś wysłał sobie dane zakodowane JSONem, co powinno Ci problem rozwiązać.
    http://pl.php.net/...l/en/function.json-encode.php

    Czyli w php tam gdzie do tej pory wypisywałeś dane daj:
    json_encode($dane_do_wyslania);

    a w JS, tam gdzie teraz odbierasz dane zacznij od:
    res = eval ('('+data+')');
    i w res masz już swoje dane.

    BTW w ten sposób można łatwo wysyłać np. macierze, tak:
    - php -
    $myArray['status'] = 'ok';
    $myArray['content'] = 'ok';
    json_encode($myArray);

    - js -
    res = eval ('('+data+')');
    alert (res.status);
    alert (res.content);

    http://flickr.com/photos/myhacien
    da

    1. wytłumacz mi składnię tego eval, bo póki co to mi skrypt przestał działać , kubazzz 10/02/09 11:47
      wrrr.

      SM-S908

    2. ja coś źle robię - kurde. jak wysłać z php JSON i jak odebrać w jQuery? , kubazzz 10/02/09 11:54
      NIE MACIERZE, zwykły HTML

      Firebug mi dalej się wykrzacza na tym:
      missing ) in parenthetical
      [Break on this error] ("<a href=\"#\">usu\u0...f3w"<script type="text/javascript"><!--\n

      wywala się na pierwszym polskim znaku..

      SM-S908

      1. najprostszy wariant , kubazzz 10/02/09 12:01
        PHP wyrzuca string, który zawiera tagi html i treść.

        $msg = "<div><spancoś tam po polskiemy<br/>ala ma kota</span></div>";
        $msg = json_encode($msg);

        echo $msg;

        javascript:

        $.ajax({

        type: "GET",
        success: function(dane){
        var response = eval('('+dane+')');
        $("<div class='dane'>"+response+"</div>").prependTo('.nauka')


        [pomijajac fakt ze tego do konca nie rozumiem, tego eval, to i tak nie działa, teraz na FF się wywala]

        Jak dla idioty.

        CO I GDZIE mam dopisać i dlaczego.
        Błagam..
        ja już mam dość tego gówna, nie chcę się dzisiaj niczego uczyć, po prostu ma działać

        SM-S908

        1. Pewnie już rozwiązałeś, ale , Conroy 10/02/09 21:59
          To mi się nie podoba
          $("<div class='dane'>"+response+"</div>").prependTo('.nauka')

          Tak czy inaczej, nie bardzo wiem, co może u Ciebie nie działać, nie wiem nawet co Ci podpowiedzieć.

          Do tego czasu już to pewnie masz z głowy, a ja niestety nie mogłem wcześniej odpisać.

          Mówisz, że Eval coś nie tak... może inaczej, zobacz sobie czy to działa, bo po prostu musi:

          plik.html
          <html>
          <body>
          <script type="text/javascript">
          res = eval ('(' + "\"test - \u0105\u015b\u017c\u017a\u0107\u00f3\u0142\u0119\u0144\u0104\u015a\u017b\u0179\u0106\u00d3\u0141\u0141\u0118\u0143 - test\"" + ')');
          alert (res);
          </script>
          </body>
          </html>

          Zrobiłem tak, napisałem takiego php (php zapisany w UTF-8):
          <?php
          echo json_encode (array('test - ąśżźćółęńĄŚŻŹĆÓŁŁĘŃ - test'));

          Który wypluł mi na ekran ww. ciąg. Po czym go przekleiłem do html'a. Nie chciało mi się pisać zapytania ajaxowego. JSON zrócił zakodowane polskie znaki. Wyświetliły mi się poprawnie.

          http://flickr.com/photos/myhacien
          da

          1. nie rozwiązałem niestety , kubazzz 10/02/09 22:28
            trochę nie mam już siły nad tym myśleć.

            SM-S908

  2. Dodaj naglowek , Góral 10/02/09 12:38
    Przy wysylaniu odpowiedzi ajaksowej doklej na poczatku:
    header ('Content-type: text/html; charset=utf-8');

    1. ino gdzie to dokleić? , kubazzz 10/02/09 13:27
      na początku pliku php obslugujacego zapytanie?
      czy w jakis sposob na poczatku zmiennej, ktora ten skrypt wyrzuca?

      SM-S908

      1. 123 , Góral 10/02/09 14:44
        w skrypcie gdzie zwracasz odpowiedz:
        $('<div class="dane">'+dane+'</div>').prependTo('#pojemnik');

        wklejasz header... przed wywolaniem echo lub print

  3. to jest jakiś problem z kodowaniem znaków, z konwersją, nie wiem jak to naprawić :/ , kubazzz 10/02/09 14:16
    sytuacja wygląda tak, że jeśli mam stronę w UTF-8, zrobię konwersję na ANSI, a potem z powrotem na UTF-8 [konwersja w notepad++] to w jakiś dziwny sposób sypią się znaki w IE, ale tylko w IE.
    Nieważne są wtedy deklaracje, po prostu się to pierdoli..
    Nawet potrafię to wywołać..

    SM-S908

    1. aaaaaaaaaaaaaaaaa , kubazzz 10/02/09 14:18
      nie wiem jak to zrobić, chyba tylko przepisanie ręcznie tego pomoże.
      no ale bez jaj...

      SM-S908

    2. mam koncepcję, że coś się popieprzyło może z kolejnością bajtów , kubazzz 10/02/09 14:54
      przy kodowaniu na UTF-8 z ANSI..

      bo jesli wytne zawartosc dokumentu [ten kod strony np], zrobie nowy dokument UTF-8, wkleje tam ten kod to notepad++ nie rozpoznaje skladni, tak jakby caly kod byl posiekany bledami.

      I wiem, ze wczesniej ten skrypt pod IE działał, ale potem namieszałem z konwersją znaków. Pozornie wróciło do stanu pierwotnego, ale jak widać nie do końca.

      SM-S908

  4. Możesz ewentualnie tak spróbować, żeby nie kombinować: , Mcmumin 11/02/09 11:15
    function polskie_fiutki ($text) {
    $text = str_replace("\xC4\x85", '&#261;', $text);
    $text = str_replace("\xC4\x84", '&#260;', $text);
    $text = str_replace("\xC4\x87", '&#263;', $text);
    $text = str_replace("\xC4\x86", '&#262;', $text);
    $text = str_replace("\xC4\x99", '&#281;', $text);
    $text = str_replace("\xC4\x98", '&#280;', $text);
    $text = str_replace("\xC5\x82", '&#322;', $text);
    $text = str_replace("\xC5\x81", '&#321;', $text);
    $text = str_replace("\xC3\xB3", '&oacute;', $text);
    $text = str_replace("\xC3\x93", '&Oacute;', $text);
    $text = str_replace("\xC5\x9B", '&#347;', $text);
    $text = str_replace("\xC5\x9A", '&#346;', $text);
    $text = str_replace("\xC5\xBC", '&#380;', $text);
    $text = str_replace("\xC5\xBB", '&#379;', $text);
    $text = str_replace("\xC5\xBA", '&#378;', $text);
    $text = str_replace("\xC5\xB9", '&#377;', $text);
    $text = str_replace("\xc5\x84", '&#324;', $text);
    $text = str_replace("\xc5\x83", '&#323;', $text);
    return $text;
    }

    i użycie:
    $imie = polskie_fiutki($_POST['imie']);

    
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL