[Ajax] Polskie znaki |
[Ajax] Polskie znaki |
15.08.2006, 00:54:01
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 |
|
|
15.08.2006, 14:08:41
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() ?
|
|
|
15.08.2006, 14:15:41
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 |
|
|
15.08.2006, 14:27:29
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.
|
|
|
15.08.2006, 14:32:47
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. |
|
|
15.08.2006, 14:35:21
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 |
|
|
15.08.2006, 14:41:07
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 |
|
|
15.08.2006, 14:47:55
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.
|
|
|
15.08.2006, 14:58:14
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. |
|
|
15.08.2006, 15:12:42
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 ?
-------------------- |
|
|
15.08.2006, 15:21:12
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).
|
|
|
15.08.2006, 15:37:24
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 |
|
|
15.08.2006, 16:27:37
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 |
|
|
15.08.2006, 18:02:32
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 ;(
-------------------- |
|
|
15.08.2006, 19:46:32
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 |
|
|
15.08.2006, 19:51:21
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 |
|
|
16.08.2006, 00:48:50
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). |
|
|
16.08.2006, 06:47:39
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$ to byłoby Windows-1250) iso-8859-2 i to jest najszybszy sposób na zmianę kodowania pobieranych pól. Ten post edytował UNK 16.08.2006, 06:57:31 |
|
|
17.08.2006, 00:57:52
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 |
|
|
17.08.2006, 16:37:50
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.
|
|
|
Wersja Lo-Fi | Aktualny czas: 29.03.2024 - 14:42 |