2012-04-21 28 views

Odpowiedz

7

Jeśli twoje pliki javascript są zakodowane za pomocą innego kodowania niż strona, możesz użyć atrybutu charset, aby poinformować przeglądarkę, jak je interpretować.

Na przykład, jeśli strona używa Latin1, ale plik JS został utworzony za pomocą UTF-8.

+1

Chociaż wydaje mi się, że lepiej jest umieścić kodowanie w nagłówku odpowiedzi, która zwraca skrypt. – GolezTrol

+1

@GolezTrol - Powinien być lepszy, ale nie wszyscy autorzy stron mają taką kontrolę nad nagłówkami. – Oded

+1

Jeśli strona używa innego kodowania (w moim przypadku, euc-kr), a JS używa UTF8, część tekstu napisana przez wywołanie document.write() lub ustawienie innerHTML jakiegoś elementu będzie poprawnie zakodowane w kodowaniu (euc -kr) nie ma UTF8? –

3

Każdy plik JavaScript jest oddzielnym elementem strony, po tym wszystkim można załadować JS z jakiegoś zdalnego serwera autora, który w przeciwnym razie nie ma żadnych relacji z twoją stroną. Podobnie jak w przypadku każdego innego elementu zewnętrznego, możesz ręcznie określić "zestaw znaków", jeśli zdalny serwer zwróci zły zestaw znaków z jakiegoś powodu lub po prostu dla pewności.

Jeśli masz dostęp do pliku JS do zapisu, możesz zamienić wszystkie znaki spoza ASCII na znaki ucieczki w standardzie Unicode - to zagwarantuje, że symbole będą zawsze interpretowane poprawnie, bez względu na to, jakie kodowanie zostało określone w nagłówkach . Niektóre minizestawy JS, takie jak Google Closure Compiler, mogą zrobić to automatycznie.

+0

Co jest priorytetem? 'script charset' lub zestaw znaków nagłówka dołączonego pliku js? – Pacerier

5

Celem parametru charset jest określenie kodowania skryptu zewnętrznego w przypadkach, gdy kodowanie nie jest określone na poziomie protokołu HTTP. Jest to , a nie przeznaczone do przesłonięcia informacji o kodowaniu w nagłówkach HTTP, a tego nie robi.

Jest to przydatne, gdy autor nie może sterować nagłówkami HTTP, a nagłówki nie określają kodowania znaków. Jest także przydatny w przypadku plików offline, na przykład w lokalnej kopii strony internetowej, do której można uzyskać bezpośredni dostęp, a nie za pośrednictwem serwera HTTP, więc nie istnieją nagłówki HTTP.

W praktyce nie jest zbyt przydatna. Jeśli chcesz użyć znaków spoza ASCII w pliku JavaScript, możesz użyć kodowania UTF-8. Jeśli używasz UTF-8 z wiodącą specyfikacją materiałową, BOM działa jako przydatny wskaźnik, który pozwala przeglądarce na wnioskowanie o kodowaniu. Ale nie zaszkodzi dodatkowo użyć charset=utf-8.

+0

Czy jesteś pewien, że zestaw znaków podany w nagłówku załączonego pliku JS ma wyższy priorytet niż jawny zestaw znaków określony na stronie głównej html?Czy to roszczenie zostało przetestowane w rzeczywistych przeglądarkach ** na wolności **? – Pacerier

+1

Tak, przetestowany w Firefox, Chrome, IE (Win 7). Strona testowa: http://www.cs.tut.fi/~jkorpela/test/js/demo.html –