Kodowanie polskich znaków a JavaScrpit

0

Hej!
Mam nietypowy problem....
Mianowicie jeśli mam ustawione kodowanie pliku w NOTEPAD++ na ANSI to w Internet Explorerze to skrypt JavaScript sie poprawnie wykonuje, jeśli przestawie na UTF-8 to niestety ale... nie działa.
W Firefox na obu kodowaniach dobrze działa...

0

może problem tkwi w BOM?

0
nav napisał(a)

może problem tkwi w BOM?

Hmmm tzn?? A jak to naprawić?

BOM (ang. Byte Order Mark - znacznik kolejności bajtów) – w wielobajtowym kodowaniu znaków o stałej długości (tzn. takim, że każdy znak jest zapisany za pomocą takiej samej liczby bajtów, np. UTF-16 - 2 bajty, UTF-32 - 4 bajty) pojawia się problem interpretacji kolejności bajtów w znaku. Rozwiązaniem tego problemu jest właśnie BOM. Na początku strumienia bajtów (np. początek pliku) zapisuje się znacznik kolejności bajtów (BOM), informujący w jakiej kolejności należy ustawić bajty, aby uzyskać kod znaku.

Kodowanie UTF-8 nie potrzebuje znacznika kolejności bajtów (BOM), ponieważ jest kodowaniem o zmiennej długości i kolejność bajtów jest jednoznaczna. Stąd też BOM dla UTF-8 jest nieobowiązkowy.

Niektóre edytory nie potrafią odczytać pliku UTF-8 jeśli brak BOM. Inne wprost przeciwnie, to właśnie obecność BOM powoduje kłopoty. Przykładowo program Notatnik stara się obsługiwać to automatycznie. Otóż jeśli tworzymy nowy plik i zapiszemy go za pomocą kodowania UTF-8, to Notatnik doda na początku BOM. Oczywiście w Notatniku go nie widać, ale można się o tym przekonać zapisując pusty plik. Okaże się, że ma długość 3 bajtów. Jeśli otworzymy w Notatniku plik zapisany za pomocą kodowania UTF-8, ale bez BOM, to Notatnik prawidłowo odczyta plik; mało tego, jeśli coś zmienimy, to przy powtórnym zapisaniu również go nie doda. Dopiero wybranie polecenia Zapisz jako spowoduje dodanie BOM.

0

Format -> UTF-8 bez BOM w N++.
Zapisz tak i spróbuj.

0

Ok, działa,ale jeśli nie określę kodowania w HTML
Jak określić utf-8 w HTML ???

Jesli ustawie utf-8 bez BOM i w kodzie jest

<meta http-equiv="content-type" content="text/html; charset=utf-8">

to wtedy skrypt nie działa.
Jeśli ustawie

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

to wtedy skrypt działa.

W utf-8 z BOM na utf-8 kodowaniu nie działa, na iso też nie działa.

Jeśli w pliku ustawie ANSI to z kodowaniem iso działa , z utf-8 kodowaniem nie działa.

Co ciekawe w Firefox nie ma takich problemów...
Czyzby blad IE,albo spisek Microsoftu?

0

Hmm... Może problem w tym, jakie nagłówki przesyła serwer? Jaki masz nagłówek Content-type?

0
Adam.Pilorz napisał(a)

Hmm... Może problem w tym, jakie nagłówki przesyła serwer? Jaki masz nagłówek Content-type?

Tzn?

<html>
<head>
   <title> Menu </title>
</head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">

<script language = "JavaScript">

Taki mam poczatek
0

Ale mnie nie chodzi o sekcję <head> dokumentu, tylko nagłówki serwera. Chyba, że otwierasz to lokalnie, jako plik na dysku - wówczas tutaj może się kryć problem (IE może to traktować jak WIN-1250 albo ISO-8859-2 albo Bóg jeden wie co jeszcze).

0

Pisz Polskie znaki w HEX'ach.

0
Adam.Pilorz napisał(a)

Ale mnie nie chodzi o sekcję <head> dokumentu, tylko nagłówki serwera. Chyba, że otwierasz to lokalnie, jako plik na dysku - wówczas tutaj może się kryć problem (IE może to traktować jak WIN-1250 albo ISO-8859-2 albo Bóg jeden wie co jeszcze).

Stronę otwieram lokalnie.... Może faktycznie tu jest problem...
W sumie ten plik zawiera tylko menu (zrobione graficznie) ; nie ma polskich liter w ogóle używanych w tym pliku,ale pro forma chciałem ustawić poprawne kodowanie....

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.