Problem z kodowaniem utf-8 i iso-8859-2 w AJAX i PHP

[ad#post]Na początek należy zaznaczyć, że AJAX domyślnie przesyła dane używając kodowania UTF-8 więc idealną sytuacja byłoby gdybyś używał kodowania UTF-8 wszędzie na swojej stronie, począwszy od kodowania strony META, kodowaniu plików źródłowych html/php/javascript a skończywszy na danych przesyłanych do i z bazy danych czy innych plików
.
Załóżmy jednak, że Twoja strona używa kodowania iso-8859-2, które definiujesz na stronie wywołującej skrypt AJAX w nastepujący sposób:

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

Następnie wywołujemy AJAX

var parametr;
http.open("GET", "plik.php?param="+parametr, true);

W pliku plik.php należy wstawić nagłówek identyczny jak w twoim pliku wywołującym AJAX, zatem:

header('Content-Type: text/html; charset=iso-8859-2');

Jak zauważyłeś polskie ogonki dalej nie działają, dlaczego?
Kodowanie jest jak najbardziej poprawne, problem to sposób przekazania polskich znaków do skryptu plik.php, aby to naprawić posłużymy się poniższa funkcją umieszczając ją przed przesłaniem nagłówla HEADER z kodowaniem w pliku plik.php

function charset_utf_fix($string)
{
    $utf_iso = array(
       "\xc4\x85" => "\xb1",
       "\xc4\x84" => "\xa1",
       "\xc4\x87" => "\xe6",
       "\xc4\x86" => "\xc6",
       "\xc4\x99" => "\xea",
       "\xc4\x98" => "\xca",
       "\xc5\x82" => "\xb3",
       "\xc5\x81" => "\xa3",
       "\xc3\xb3" => "\xf3",
       "\xc3\x93" => "\xd3",
       "\xc5\x9b" => "\xb6",
       "\xc5\x9a" => "\xa6",
       "\xc5\xba" => "\xbc",
       "\xc5\xb9" => "\xac",
       "\xc5\xbc" => "\xbf",
       "\xc5\xbb" => "\xaf",
       "\xc5\x84" => "\xf1",
       "\xc5\x83" => "\xd1",
        // xmlhttprequest uses different encoding
       "%u0104" => "\xA1",
       "%u0106" => "\xC6",
       "%u0118" => "\xCA",
       "%u0141" => "\xA3",
       "%u0143" => "\xD1",
       "%u00D3" => "\xD3",
       "%u015A" => "\xA6",
       "%u0179" => "\xAC",
       "%u017B" => "\xAF",
       "%u0105" => "\xB1",
       "%u0107" => "\xE6",
       "%u0119" => "\xEA",
       "%u0142" => "\xB3",
       "%u0144" => "\xF1",
       "%u00D4" => "\xF3",
       "%u015B" => "\xB6",
       "%u017A" => "\xBC",
       "%u017C" => "\xBF"
    );
    return str_replace(array_keys($utf_iso), array_values($utf_iso), $string);
}
$_GET['param']=charset_utf_fix($_GET['param']);

Wyświetl teraz tekst przekazany metodą GET i zobaczysz, że polskie znaczki pokazują się poprawnie!

źródło: http://www.pomyslynabiznes.info/, fundusze inwestycyjne, kredyt pod hipotekę, olejek rycynowy, lokaty

Powiązane wpisy:

Powiązane słowa kluczowe:

  • jquery polskie znaki

Comments are closed.