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...
może problem tkwi w BOM?
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.
Format -> UTF-8 bez BOM w N++.
Zapisz tak i spróbuj.
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?
Hmm... Może problem w tym, jakie nagłówki przesyła serwer? Jaki masz nagłówek Content-type?
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
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).
Pisz Polskie znaki w HEX'ach.
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.