![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 15.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Mam mianowicie taki problem:
Dokument jest w iso-8859-2 Wczytuje ajaxem dane w ten sposob:
Funkcja odczytujaca dane
I teraz funkcja javascript zamiast tworzyc mi 8859-2, tworzy mi zdaje sie utf-16 i na ekranie mam krzaczki Normalne znaki sa jako ascii, a polskie znaki sa jako utf Probowalem wszystkich znalezionych metod, ale nic to nie dalo Podglad problemu: http://www.jacob.impuls.webd.pl/ LINK: POCZTA UPOMINKOWA/TEST Moznabybylo zrobic zeby zostalo tak ze: innerHTML = URLDecode(obj.responseText); }, a dac jakas akcje na warstwie ze przy zmianie zawartosci dekoduje php-owskim urldecode. Tylko jakos nie wyobrazam sobie tego rozwiazania Przed <head> mam: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> Ten post edytował impuls2003 15.08.2006, 13:56:54 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
a po co je koduejesz w tym pierwszym kodzie za pomocą urlencode() ?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 15.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Probowale bez urlencode, i urldecode. Mialem zamiast polskich literek ?
Wiec wstawilem encode. Ladnie mi dekoduje javascript, z tymze zwraca utf-16 a nie ascii-iso8859-2. Z tego co mysle ajax operuje domyslnie na innym kodowaniu niz 8859-2. Wyczytalem na forach m.in., zeby wstawic header("Content-Type: text/html; charset=iso-8859-2"); , ale to nic nie zmienia Ten post edytował impuls2003 15.08.2006, 14:19:11 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
a w jakim kodowaniu masz zapisany ten plik php i w jakim kodowaniu jest Twoja strona.. bo na pewno danych wysyłanych z serwera do ajaxa nie musisz a nawet nie powienieś niczym cytować... ważne by kodowania były zgodne to wszystko.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 15.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Strone obsluguje jeden plik index.php
Kodowany jest on w iso8859-2 (pisany glownie w normalnym notatniku) Dane sa wysylane tez w 8859-2 Czyli strona ma ustawione jednolite kodowanie. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
A skąd wiesz, że normalny notatnik zapisuje dane w iso8859-2 (bo normalny notatnik zapisuje dane w windows-1250)
![]() Domniemam, że pracujesz na windows'ie |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 15.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
A co za problem poprawic w notatniku literki na iso8859-2 (opcja kopiuj wklej literke)
![]() Wiekszosc rzeczy jest wpisywana poprzez panel admina gdzie jest domyslnie 8859-2. Czy 1250 czy 8859-2 to jest 8-bitowy ASCII. Fakt faktem calosc jest w 8859-2. Jak wkleje wygenerowany kod do notatnika i probuje go zapisac to notatnik mowi mi ze znaki sa kodowane unicode itd |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
impuls.. ja Ci tylko chcę pomóc. Twój problem najprawdopodobniej wynika z tego, że wysyłasz dane, którą są w innym kodowaniu niż strona.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 15.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
> impuls.. ja Ci tylko chcę pomóc.
Wiem. Nic zlego na mysli nie mialem. W kazdym razie dzieki. > Twój problem najprawdopodobniej wynika z tego, że wysyłasz dane, którą są w innym kodowaniu niż strona. Mozliwe. Ale skoro otwieram w notatniku tekst, sa krzaczki to znaczy ze jest to iso8859-2. W kazdym razie sprawdzam i sprawdze dokladnie problem. A teraz pytanie: Na jakim kodowaniu operuje funkcja javascript escape i unescape? Bo tego sie nigdzie nie ustawia. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Nieno ja tez mam taki problem. Wysylam iso a ajax np zamiast ś wstawia 1/4 ;/ Jak zmienic ajaxowi kodowani
![]() -------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
javascript bierze dane binarnie tak jak php, po prostu jako bity.. funkcje escape i unescape po prostu szukają konkretnych bitów i je zamieniają.. Te bity, które one zamieniają wyglądają tak samo w kodowaniach iso jaki utf8. Problem tylko utf8 jest taki, że jest to kodowanie multibitowe (są znaki i jednobitowe i dwa, trzy czterobitowe) ..przez to może być możliwość (ale tego nie wiem), że escape i unescape coś schrzanią (bo one za pewne traktują każdy bit jako jeden znak).
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 422 Pomógł: 0 Dołączył: 14.12.2005 Skąd: Wałbrzych Ostrzeżenie: (0%) ![]() ![]() |
ja dzisiaj bawilem sie iconv" title="Zobacz w manualu php" target="_manual
-------------------- Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 15.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Problem lezy po stronie javascript unescape()
Pisze wlasna funkcje unescape ![]() |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
@balon: znasz jakąś funkcję zastępcza. Bo mi nie chce ona działać. Mb convert też nie działa ;(
-------------------- |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 15.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Rozwiazanie (nie widzialem tego wogule w internecie
![]() Plik php wczytujacy dane:
Kod javascript odczytujacy dane:
Musimy miec biblioteke php (do znalezienia w sieci): 7-1-biblioteka-pl.zip |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jak to jest, że wszędzie gdzie używam ajaxa nie muszę niczego cytować (escape'ować).. i przechodzą mi polskie literki, francuskie i nawet chińskie..
Ten post edytował mariuszn3 15.08.2006, 19:53:24 |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 15.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
I teraz np. mam lighbox js (ten efekt do zdjec) i te zdjecia ze znacznikiem rel="xxx" wczytane z ajaxa to nie wchodzi mi ten efekt lightbox.
Zeby nie zasmiecac pisze w tym samym poscie. Nastepna sprawa. Zainstalowalem PEAR i HTML_Ajax. I mam znowu znaki zapytania zamiast polskich liter. Doszukalem sie funkcji setrequestheader. Tylko nie wiem jak ja uzyc. Rozwiazanie ostateczne: Skoro javascript operuje na UTF, to nie mozemy wysylac w ISO-8859-2, tylko przed wyslaniem musimy zamienic na UTF, np. tak <? if (!isset ($tryb)) {$tryb='';} if ($tryb == 'ajax') {echo pl_iso2utf8($content); exit;} ?> Wreszcie doszlem co jest (po 3 dniach). ![]() |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 93 Pomógł: 5 Dołączył: 30.04.2006 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Aby JS działał musisz przepuścić responseText przez dodatkową funckję.
Poczytaj trochę tutaj: Temat: advAJAX HTML oraz JavaScript w responseText A tak w ogóle jeśli masz możliwość zainstalowania pakietów do php to zinstaluj sobie iconv (to z postu Balona) bardzo użyteczna funkcja przy takich przypadkach. Ja np musze z tego skorzystać bo przy jednym projekcie działam na bazie oraz stronie zakodowanej wg moje widzimisię :-) (wybrałem UTF-8), ale druga baza - mssql pracuje na innym kodowaniu (wydawało by się że jeśli M$ ![]() Ten post edytował UNK 16.08.2006, 06:57:31 |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 15.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ok. A co zrobic jesli w IE chodzi, a w FF krzaczy i za sekunde zawartosc znika i takjakby sie wczytywalo cos caly czas?
Link mam tak: <a title="Test" href="#" onclick="java script:HTML_AJAX.replace('zawartosc','index.php?tryb=ajax&p=p_17');return true;">Test</a> ----------------------------------------------------------------------------------------- Dziala juz wszystko. Zaimplementowalem na probe do plywajacej galerii na http://www.jacob.impuls.webd.pl/. Jesli ktos ma problemy to rozwiazanie mu pomoze. Sprawdzalem pod IE6, FF, Opera, Netscape. Dziala. Dziala to tak:
Co ciekawe ten kod: URLDecodespacja(unescape()) zwraca mi nie utf tylko normalnie iso8859-2. Z tymze wykorzystalem u siebie biblioteki PEAR HTML_AJAX Mozecie sobie podgladnac kod strony. Dziwne to wszystko, ale wazne ze chodzi ![]() No, moglem przejsc jeszcze na kodowanie strony utf-8, ale zmieniac teraz wszystkie teksty na stronie ![]() |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
W ogóle ostatnio przyszło mi do głowy co może być przyczyną waszych problemów - Dokument, który wysyłacie w odpowiedzi na zapytanie xmlHttp też musi nieść ze sobą informację o tym w jakim kodowaniu jest napisany.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 22:15 |