Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AJAX] - Czyli artykuł na temat polskich znaków !
SN@JPER^
post 3.05.2007, 14:36:12
Post #1





Grupa: Zarejestrowani
Postów: 266
Pomógł: 0
Dołączył: 4.01.2007
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Przeszukując właśnie tematy tego forum pt. "polskie znaki w AJAX" doszedłem do wniosku, że napisze właśnie jak zapobiec "krzakom" w AJAX.

1. Pierwszą rzeczą, którą trzeba zrobic jest wstawienie meta tag np. w pliku index.html

  1. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />


2. Następnie, w pliku np. ajax.js dodajemy linijkę kodu:

  1. xmlHttp.overrideMimeType('text/html; charset=ISO-8859-2');


U mnie wygląda to tak:

  1. function process()
  2. {
  3. wiadomosc("Pobieranie wiadomości... Proszę Czekac");
  4.  
  5. try
  6. {
  7. xmlHttp.open("GET", serveradres, true);
  8. xmlHttp.onreadystatechange = ReServer;
  9. xmlHttp.send(null);
  10. xmlHttp.overrideMimeType('text/html; charset=ISO-8859-2');
  11. }
  12.  
  13. catch(e)
  14. {
  15. errorwiadomosc();
  16. }
  17. }


3. przy pobieraniu danych z bazy w pliku np. ajax.class.php robimy zapytanie:

  1. <?php
  2. $query_kod = "SET NAMES latin2";
  3.  $result = $this->mMysqli->query($query_kod);
  4. ?>


najlepiej przed zapytaniem przy pobieraniu danych.

U mnie cała funkcja wygląda tak:

  1. <?php
  2. public function Ajax()
  3. {
  4.  usleep(25000);
  5.  
  6.  //KODOWANIE ZNAKÓW
  7.  
  8.  $query_kod = "SET NAMES latin2";
  9.  $result = $this->mMysqli->query($query_kod);
  10.  
  11.  
  12.  
  13.  $query = 'SELECT * FROM sb_wpis';
  14.  
  15.  $result = $this->mMysqli->query($query);
  16.  
  17.  $dane = $result->fetch_array(MYSQLI_ASSOC);
  18.  
  19.  $result->close();
  20.  
  21.  $id = stripslashes($dane['id']);
  22.  $data = stripslashes($dane['data']);
  23.  $tresc = stripslashes($dane['tresc']);
  24.  $autor = stripslashes($dane['autor']);
  25.  
  26.  
  27.  
  28.  $wiadomosc = '['. $data .']'. $tresc .'-'. $autor.'.';
  29.  return $wiadomosc;
  30.  
  31. }
  32. ?>


Myślę, że choć trochę pomogłem

Pozdrawiam.

Ten post edytował SN@JPER^ 4.05.2007, 09:49:45
Go to the top of the page
+Quote Post
2 Stron V  < 1 2  
Start new topic
Odpowiedzi (20 - 26)
Eraden
post 22.09.2009, 11:03:07
Post #21





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 22.09.2009
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Rzymek01, czy mógłbyś to rozpisać?
Jestem jeszcze zielony w AJAX i naprawdę jak to jest lepsze rozwiązanie to chciałbym je szczegółowo poznać zamiast dochodzić samemu (pewnie więcej bym się w ten sposób nauczył ale też mogę coś zwalić)
Go to the top of the page
+Quote Post
erix
post 22.09.2009, 11:14:45
Post #22





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




https://developer.mozilla.org/pl/Dokumentac...odeURIComponent


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
rzymek01
post 22.09.2009, 22:46:10
Post #23





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

Ostrzeżenie: (0%)
-----


hmm. rozpisać smile.gif

przeczytaj co te funkcje robią i tak ogólnie:
1) masz formularz na stronie (nie wiem czy kodowanie/charset strony jest tutaj istotne, ale w każdym razie przy utf-8 działa)
2) przed wysłaniem żądania np. GET dane traktujesz encodeURIComponent, np. http://strona.com/ajax.php?dane=encodeURIC...ut').value)
3) w php odbierając dane działasz $dane = rawurldecode($_GET['dane']);

Ten post edytował rzymek01 22.09.2009, 22:51:27


--------------------
:]
Go to the top of the page
+Quote Post
marianooo
post 30.09.2010, 17:18:44
Post #24





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 29.09.2010

Ostrzeżenie: (0%)
-----


Witam, może ktoś rzeczowo i konkretnie napisać jakich zmian należy dokonać w formularzu AJAX CONTACT FORM tak ażeby w przychodzących mailach były polskie znaki questionmark.gif? Próbowałem różnych metod, także opisanych na tym forum ale nic nie dało rezultatu. Proszę o jakieś rzeczowe wyjaśnienie jak sobie z tym poradzić

Posiadam takie pliki:

index.php
contact.js
contact.php
functionaddevent.js
loading.gif
thumbs.db
xmlhttp.js
functionaddevent.php

Pliki można pobrać STĄD

Dziwna rzecz - jak ustawie azeby maile przychodziły na gmaila to w poczcie gmail mam polskie znaki - a na innych kontach nie mam

Ten post edytował marianooo 30.09.2010, 17:20:08
Go to the top of the page
+Quote Post
blasq
post 2.12.2010, 23:13:45
Post #25





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 29.11.2010

Ostrzeżenie: (0%)
-----


Witam
chciałbym odnieść się do przesyłania polskich znaków w jQuery. Siedziałem nad tym 2 dni, nim doszedłem do tego, przeczytałem setki tematów i artykułów z tym związanych. Zamiast polskich znaków były tylko krzaczki. Może więc komuś się przyda...

chodzi o dodawanie komentarzy, przesyłanie GETem do pliku php, wpis do bazy, i zwracanie komentarza w rezultacie do dokumentu rodzica, gdzie jest on dynamicznie dopisywany do listy

moje rozwiązanie:
ustawić w meta kodowanie utf-8, zaś w wywoływanym w tle pliku php dodać nagłówek
  1. header('Content-Type: text/html; charset=utf-8');

pliki z kodem zapisać przy użyciu edytora tekstowego z kodowaniem UTF-8.
Co najważniejsze: do formularza dodać atrybut akceptowanego kodowania (pomijam inne atrybuty):

  1. <form accept-charset="utf-8">



jeśli to okaże się niewystarczające, można w pliku php dodać funkcję konwersji:

  1. function znaki_pl($string)
  2. {
  3. $przed= array('%u0105','%u0107','%u0119','%u0142','%u0144','%F3','%u015B','%u017A','%u017C',
  4. '%u0104','%u0106','%u0118','%u0141','%u0143','Ó','%u015A','%u0179','%u017B');
  5. $po= array("ą","ć","ę","ł","ń","ó","ś","ź","ż",
  6. "Ą","Ć","Ę","Ł","Ń","Ó","Ś","Ź","Ż");
  7.  
  8. $string = str_replace($przed, $po, $string);
  9. return $string;
  10. }
  11.  
  12. $txt=znaki_pl($txt);


zwracam uwagę na zmieniony ręcznie przeze mnie wpis dotyczący "ó" - długo nie mogłem dojść, dlaczego z tą jedną literą był wciąż problem...

pozdrawiam!
Go to the top of the page
+Quote Post
mate006
post 10.10.2011, 17:08:30
Post #26





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 13.05.2011

Ostrzeżenie: (0%)
-----


Wiem że odkopuję stary temat, ale już mi głowa pęka od tego kombinowania.

A mianowicie co zrobić by dane z literą ó mi wyświetlało?

np.
$str = "mój pies";

To nic sie nie dzieję, jeśli jednak zrobię

$str =str_replace("ó", "o", $str);

to nie ma problemu i wszystko ładnie chodzi z innymi literami jest ok. czemu ta literka ó robi takie problemy?

Proszę pomóżcie, doradzcie coś bo mi już sił brak na walkę z tym. wszystkie te metody z tego forum już próbowałem jednak zero poprawy
Go to the top of the page
+Quote Post
daniel1302
post 31.01.2012, 10:01:47
Post #27





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Dodaj od siebie 2 funkcje.
W JSON miałem mnóstwo problemów aby przesłać tekst z polskimi znakami. Raz udało mi się to ominąć, lecz gdy wysłałem pliki z localhosta na serwer to spowrotem to samo...
Funkcja w PHP:

  1. function toCode($string)
  2. {
  3. $string = preg_replace('/ę/', '{e}', $string);
  4. $string = preg_replace('/ó/', '{o}', $string);
  5. $string = preg_replace('/ą/', '{a}', $string);
  6. $string = preg_replace('/ś/', '{s}', $string);
  7. $string = preg_replace('/ł/', '{l}', $string);
  8. $string = preg_replace('/ż/', '{z}', $string);
  9. $string = preg_replace('/ź/', '{x}', $string);
  10. $string = preg_replace('/ć/', '{c}', $string);
  11. $string = preg_replace('/ń/', '{n}', $string);
  12. return $string;
  13. }

I oto gdy mamy taki tekst: Mój koleżka ma osę, Otrzymamy: M{o}j kole{z}ka ma os{e}, I tym sposobem JSON nic sie nam nie będzie rzucał, nie wytnie mam tekstu itp...

I funkcja odkodowująca dla JS:
  1. function toPolish(string)
  2. {
  3. string = string.replace('{e}', 'ę');
  4. string = string.replace('{o}', 'ó');
  5. string = string.replace('{a}', 'ą');
  6. string = string.replace('{s}', 'ś');
  7. string = string.replace('{l}', 'ł');
  8. string = string.replace('{z}', 'ż');
  9. string = string.replace('{x}', 'ź');
  10. string = string.replace('{c}', 'ć');
  11. string = string.replace('{n}', 'ń');
  12. return string;
  13. }


Która zwróci nam taki tekst jaki zakodowaliśmy.
Go to the top of the page
+Quote Post

2 Stron V  < 1 2
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.05.2024 - 11:47