Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AJAX] - Czyli artykuł na temat polskich znaków !
SN@JPER^
post
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
 
Start new topic
Odpowiedzi
sarat20
post
Post #2





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.02.2008

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


Punkt drugi nie działa:
>> xmlHttp.overrideMimeType('text/html; charset=ISO-8859-2');)
wyskakuje bład, że metoda nie istnieje (testowane na IE i firefoxie).

Występowanie krzaczków w polskich literach można podzielić na 2 etapy:
1. Wysyłanie danych przez obiekt xmlhttprequest. Np przesyłam łańcuch znaków "wkrętarka" i w skrypcie php otrzymuję "wkr%u0119tarka". Do zamiany tych znaków używam poniższej funkcji:

  1. <?php
  2. function charset_utf_fix($string)
  3. {
  4. $utf_iso = array(
  5.  "xc4x85" => "xb1",
  6.  "xc4x84" => "xa1",
  7.  "xc4x87" => "xe6",
  8.  "xc4x86" => "xc6",
  9.  "xc4x99" => "xea",
  10.  "xc4x98" => "xca",
  11.  "xc5x82" => "xb3",
  12.  "xc5x81" => "xa3",
  13.  "xc3xb3" => "xf3",
  14.  "xc3x93" => "xd3",
  15.  "xc5x9b" => "xb6",
  16.  "xc5x9a" => "xa6",
  17.  "xc5xba" => "xbc",
  18.  "xc5xb9" => "xac",
  19.  "xc5xbc" => "xbf",
  20.  "xc5xbb" => "xaf",
  21.  "xc5x84" => "xf1",
  22.  "xc5x83" => "xd1",
  23. // xmlhttprequest uses different encoding
  24.  "%u0104" => "xA1",
  25.  "%u0106" => "xC6",
  26.  "%u0118" => "xCA",
  27.  "%u0141" => "xA3",
  28.  "%u0143" => "xD1",
  29.  "%u00D3" => "xD3",
  30.  "%u015A" => "xA6",
  31.  "%u0179" => "xAC",
  32.  "%u017B" => "xAF",
  33.  "%u0105" => "xB1",
  34.  "%u0107" => "xE6",
  35.  "%u0119" => "xEA",
  36.  "%u0142" => "xB3",
  37.  "%u0144" => "xF1",
  38.  "%u00D4" => "xF3",
  39.  "%u015B" => "xB6",
  40.  "%u017A" => "xBC",
  41.  "%u017C" => "xBF"
  42. );
  43. return str_replace(array_keys($utf_iso), array_values($utf_iso), $string);
  44. }
  45. ?>


Wystarczy druga częsć tablicy, pierwsza częsć działa przy dekodowaniu utf-8 w plikach/dokumentach, ale obiekt xmlhttprequest koduje dane w inny sposób.

2. Odbieranie danych przez obiekt xmlhttprequest. W skrypcie php należy wysłać nagłówek "Content-type":

  1. <?php
  2. header('Content-Type: text/html; charset=ISO-8859-2');
  3. ?>


Ten post edytował sarat20 17.02.2008, 03:44:38
Go to the top of the page
+Quote Post

Posty w temacie
- SN@JPER^   [AJAX] - Czyli artykuł na temat polskich znaków !   3.05.2007, 14:36:12
- - TomASS   Ładnie Ja swoją drogą, akurat korzystając z AJAX...   4.05.2007, 08:26:15
- - SN@JPER^   Poprawione   4.05.2007, 09:50:50
- - NoiseMc   Ostatnio robie system komentarzy uzywajac Prototyp...   28.06.2007, 22:30:34
- - tommy4   Pozwolę sobie tutaj napisać, że do polskich znaków...   1.07.2007, 12:41:26
- - deirathe   A ja mam taki problemik, używam advAjax wszys...   20.07.2007, 11:52:31
- - andulka   A czy mógłby ktoś napisać, jak ustawić polskie zna...   7.08.2007, 21:19:39
- - yarpo   Ja ze swojej strony chciałbym zauważy...   21.08.2007, 22:36:36
- - kaniagandzowski   Witam Mam problem z kodowaniem znaków które ujawni...   10.09.2007, 12:07:31
- - lord_t   Witam, też miałem problem z polskimi zn...   28.12.2007, 19:05:07
|- - rafaelb   Cytat(lord_t @ 28.12.2007, 21:05:07 )...   19.02.2008, 12:20:19
- - ementos   WITAM! To mój pierwszy post na tym forum! ...   15.01.2008, 16:00:15
- - sarat20   Punkt drugi nie działa: >> xmlHttp.overrideM...   17.02.2008, 03:11:11
- - krzysiek_raven   Witam. Przez ostatniczas próbuję rozgryźć Ajaxa i...   7.04.2008, 20:03:40
- - inż. Piniol   Dla strony w ISO-8859-2. Po stronie PHP: ...   13.08.2008, 09:20:38
- - andulka   Napotkałem dziwny problem, korzystam z ajaxa, aby ...   25.08.2008, 12:55:56
- - skowron-line   Wczoraj całkiem przypadkiem trafiłem na 2 funkcje ...   30.12.2008, 09:21:15
- - esiek   u mnie każdy plik jaki otwieram przez ajax zaczyna...   18.09.2009, 23:45:34
- - rzymek01   za pierwszym razem też robiłem takie funkcje str_r...   19.09.2009, 09:09:12
- - esiek   Dzieki i przetestuje   19.09.2009, 20:38:14
- - Eraden   Rzymek01, czy mógłbyś to rozpisać? Jestem jeszcze ...   22.09.2009, 11:03:07
- - erix   https://developer.mozilla.org/pl/Dokumentac...odeU...   22.09.2009, 11:14:45
- - rzymek01   hmm. rozpisać przeczytaj co te funkcje robią i t...   22.09.2009, 22:46:10
- - marianooo   Witam, może ktoś rzeczowo i konkretnie napisać jak...   30.09.2010, 17:18:44
- - blasq   Witam chciałbym odnieść się do przesyłania polskic...   2.12.2010, 23:13:45
- - mate006   Wiem że odkopuję stary temat, ale już mi głowa pęk...   10.10.2011, 17:08:30
- - daniel1302   Dodaj od siebie 2 funkcje. W JSON miałem mnóstwo ...   31.01.2012, 10:01:47


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

 



RSS Aktualny czas: 10.12.2025 - 13:20