Polskie znaki w JavaScript i AJAX

Demonical Monk

W przypadku AJAXu tagi META którymi podpiera się wielu webmasterów nie są w ogóle czytane. Formanty (a właściwie jeden) używane do asynchronicznego pobierania dokumentów nie mają w swoim zakresie działalności czytania treści zwrotnej, lecz tylko zwrócenia jej do skryptu w celu dalszej analizy. Nie może on pobierać METY, bo znajduje się ona w już odkodowanym zapewne domyślnym charsetem serwera przekazie - gdyby więc obiekt przykładał uwagę do takich tagów, musiałby pobrać dokument kolejny raz, odkodowując go prawidłowo. Najlepszą więc metodą, którą tenże formant honoruje jest nadanie nagłówka Content-Type wraz z informacją o używanej tablicy znaków. Robimy to w sposób następujący:

<?php header("Content-Type: text/html; charset=iso-8859-2"); ?>

Oczywiście jeśli używasz innego kodowania niż iso-8859-2, możesz swobodnie zmienić jego nazwę.

Parser JavaScript również może nie deklarować właściwego kodowania, a zastępować je tablicą podawaną domyślnie przez serwer - żyje on bowiem w osobnym wątku przeglądarki. W tym przypadku również czasami będziemy potrzebowali użyć kodu podanego powyżej, bo pomimo że takie sekcje jak innerHTML są kodowane zgodnie z METĄ, to wstawianie polskich znaków w funkcjach może sprawiać problemy.

FAQ

4 komentarzy

Jezeli uzywacie MySQL i uzywacie w tabelach kodowania utf8, to oprocz naglowkow jw. pomoze tez zapytanie do bazy "SET NAMES latin2". Wtedy na pewno beda polskie znaki :)

Przeredagowałbym artykuł by napisać go językiem formalnym, nie slangowo-ulicznym.

Co prawda, brak polskich znaków w ajaxie miałem tylko w safari, ale zawsze powinno wysyłać się taki nagłówek. Warto odrzucić windows-1250 i iso-8859-2 bo to kodowanie które idzie do lamusa. Standardem będzie utf-8.