28 czerwca 2008
Wbrew pozorom, tytuł tego newsa jest prawidłowy
Te kilka znaczków doprowadziło mnie do stanu wrzenia
Już od dłuższego czasu szata graficzna tego bloga knociła się w niektórych przeglądarkach :/ Sprawdzałem kod HTML, sprawdzałem CSS ale nigdzie nie mogłem się dopatrzeć błędu :/ A ponieważ na Firefox 2 wszystko działało prawidłowo to po bezowocnych poszukiwaniach rozwiązania sprawę w końcu olałem
No dobra, odłożyłem na bliżej nieokreśloną przyszłość
Teraz jednak przeszedłem na Firefox 3 i błąd zaczął mnie ponownie kłuć w oczy :/ Trochę wstyd żeby ktoś kto tworzy strony Internetowe miał taki błąd na własnym blogu i na dodatek nie umiał sobie z nim poradzić
Tak więc dzisiaj przystąpiłem do ofensywy.
Ale może najpierw napiszę w czym tkwił problem. Otóż cała strona miała na górze odstęp kilkanaście pikseli. Jak ktoś trochę kuma to najłatwiej opisać to tak, że wyglądało to jakby element body miał padding-top ustawione na te kilkanaście px.
W tym problem, że dla wszystkich elementów, które wchodziły w rachubę zarówno margin jak i padding były ustawione na 0 :/ Gdy wstawiałem jakiś znak tuż po tagu body to i tak wyświetlał się z odstępem. Ale z body było wszystko dobrze ponieważ po pierwsze miał ustawione margin i padding na 0 a po drugie miał dodane tło i ono wyświetlało się prawidłowo.
A więc skąd ta przerwa?!?!? :/ Włączyłem Firebuga, wyłączyłem praktycznie cały CSS, usunąłem prawie wszystkie tagi HTML a odstęp nadal się wyświetlał
Sobie myślę tak: skoro to nie CSS, nie HTML, nie Java Script to co do jasnej cholery? :/
No i mnie olśniło… Ano to co jest tytułem tego newsa
Parę razy już miałem z tym problem jednak do tej pory objawiał się on inaczej. Otóż kilka razy zdarzyło mi się, że po wywołaniu polecenia header() w PHP wyskakiwał błąd „Cannot add/modify header information – headers already sent by…”. Problem w tym, że ja nic nie wysyłałem. A tak mi się przynajmniej wydawało
Nazywa się to Byte Order Mark. Zainteresowanych odsyłam do wikipedii. Opiszę tylko w skrócie, że podczas pracy z dokumentami z kodowaniem w Unikodzie edytor może zapisać na samym początku pliku informację BOM. Nie jest ona w żaden sposób widoczna dlatego trudno na pierwszy rzut oka stwierdzić czy jest ona w naszym pliku. Niektóre edytory ją wymagają, inne sobie z nią nie radzą. Ogólnie niezły bajzel :/
Przy wcześniej wspomnianym problemie z header() w PHP dość szybko doszedłem do rozwiązania a potem już pamiętałem co może powodować ten nieoczekiwany błąd. Jednak pierwszy raz spotkałem się z tym aby przez BOM rozwalała się szata graficzna strony :/
No cóż, człowiek uczy się na własnych błędach. Następnym razem będę już pamiętał
Mam nadzieję, że zaoszczędzę tym wpisem trochę czasu i nerwów niektórym osobom
Jakiś czas temu testowałem różne edytory i pewnie wtedy „złapałem” BOM
Jak się pozbyć BOM? Ja otworzyłem plik w notatniku i jego zawartość skopiowałem do (uwaga!
) Pajączka, który automatycznie zamienił tajemniczy BOM na to: 
Wystarczyło usunąć te krzaki, zapisać ponownie plik i po problemie. Niektóre edytory pozwalają też wybrać czy BOM ma zostać dodane. W Notatniku przy „Zapisz jako” można wybrać kodowanie (przynajmniej ja tak mam na Windows Vista). Nie sprawdzałem czy to coś daje ale można z tym poeksperymentować
Życzę powodzenia w rozwiązywaniu problemów z BOM a sam idę się spalić ze wstydu, że męczyłem się z czymś tak błahym
Blog przede wszystkim o Internecie i mojej pasji jaką jest tworzenie stron www. Ale nie ograniczam się do jednej tematyki, piszę o wszystkim o czym mam ochotę :-)
Kobejasi napisał: 28.06.08 o godzinie 9:37
Kiedyś też się rozłożyłem na łopatki z tym błędem
Zawsze otwierałem programy moim ulubionym PSPad, a raz otworzyłem plik w Notatnik++ i się potem zastanawiałem z godzinę dlaczego mi się szablon rozjeżdża
Polecam Wszystkim program PSPad, wystarczy otworzyć w nim plik ustawić stronę kodowania i wcisnąć zapisz i po bólu
Bastet napisał: 28.06.08 o godzinie 9:48
Ehh … Żebym ja też Ciebie do takiego stanu doprowadzała, jak te krzaczki
Mmmm marzenie 
:*
Mój genialny programista
PS. A mówiłam żeby testować na mojej przeglądarce :> Teraz to się wstydź
patab napisał: 29.06.08 o godzinie 19:50
session_start tez nie zadziała przy tym
MariuszT napisał: 29.06.08 o godzinie 19:59
Tak jak napisałem, nie zadziała nic co wymaga aby zostało wysłane jako pierwsze do przeglądarki. Czyli właśnie session_start czy header. Bo ten cholerny BOM wyśle się jako pierwsze i wywali się nam błąd…
toman napisał: 04.07.08 o godzinie 19:07
hm, u mnie ten Bom pajaczek nie zamienia, w notatniku mam zapisane jako utf-8, otwieram w pajaczku, i nic
MariuszT napisał: 04.07.08 o godzinie 19:39
Ja nie otworzyłem w Pajączku tylko w notatniku i zawartość pliku przekopiowałem do nowego dokumentu w Pajączku. Wtedy BOM zamienił mi się na te krzaczki. Wystarczyło je usunąć i nadpisać plik.
RudeDude napisał: 17.07.08 o godzinie 10:38
Miałem dwa dni temu tez taki problem. Objawiał się tym że nie mogłem ustawić nagłówków funkcja w php do pliku wywoływanego przez ajax. Przypadkiem miałem jeden plik zapisany bez BOM i gdy wrzuciłem pliki na serwer hostingowy to zauważyłem że się nie wyświetlają polskie znaki w plikach z BOM. Jedynie w pliku który miał kodowanie bez BOM wszystkie polskie litery wyświetlały się poprawnie. Gdy otworzyłem plik notepad2 zauważyłem że kodowanie jest tam na utf8 bez sygnaturki. Później poczytałem o tym na wikipedii i zorientowałem się że notepad++ zapisuje w kodowaniu utf8 wraz z BOM. Dopiero gdy przestawiłem sobie na utf8 bez BOM wszystko zaczęło działać łącznie z wysyłaniem nagłówków przez php.
Co do rozjeżdżania się strony to też to miałem, nie wiedziałem dlaczego tak się dzieje. Jedynie w Operze nie było odstępu od górnej krawędzi przeglądarki. Czytając tego posta postanowiłem że sprawdzę sobie jak teraz strona wygląda i faktycznie teraz nie mam tych odstępów u góry.
Pozdrawiam!