UTF-8 fájlok és a BOM

A probléma leírása

A Jegyzettömb (Notepad) programot használtam egy PHP fájl szerkesztésére és a tárhelyre visszamásolás után valami furcsa dolog történt. (pl: Cannot modify header information PHP hibát kapok)

A probléma oka

Bizonyos szövegszerkesztő programok -, mint például a Jegyzettömb - automatikusan tesznek két speciális, szövegszerkesztőben nem látható jelölő karaktert (ezt hívják BOM-nak) az UTF-8 kódolással mentett szövegfájlok elejére. Ezek a karakterek megzavarják a PHP-t futtató értelmezőt és bizonyos esetekben hibás működést okozhatnak.

Sajnos csomó program magától használja a BOM-ot (Byte Order Mark), rákérdezés vagy egyéb erre utaló jel nélkül berakja a fájl elejére, amit sok szerver nem kedvel. Nálunk számtalan hiba adódott abból, hogy általános szövegszerkesztő programokkal (Windows-on) belenyúlt valaki a fájl tartalmába, és nincs lehetőség kiválasztani a mentéskor olyan verziót, hogy BOM ne kerüljön a fájlba.

Hibajelenség például a már említett üzenet, vagy felesleges karakterek a kész HTML oldalban. Pl. Include-ok a beidézett fájlok elejéről bemásolhatják a beidézet PHP fájl legelején szereplő BOM-ot egy másik fájl tetszőleges helyére, így problémák elég széles skálán jelentkezhetnek. Nálunk sok felesleges sortörést vettünk észre, amik számos esetben erre a felesleges BOM hibára voltak visszavezethetőek.

Megoldások

  • A legegyszerűbb az, hogy a PHP kódot tartalmazó fájlokat másik szövegszerkesztő programmal kell szerkeszteni és azokban elmenteni (pl. Notepad++ - http://notepad-plus-plus.org/ Ha ebből aktuális verziót használsz, a program Encoding menüjében módosítsd a beállításokat, pl. a Convert to UTF-8 without BOM opcióval, egyébként nem fog eltűnni a BOM.) Ezek után helyesen fognak működni a feltöltést követően.
  • A másik megoldás, ami csak akkor működik, ha nem tartalmaz ékezeteket az adott fájl (pl. egy konfigurációs fájl valamilyen PHP-s CMS-hez/blogmotorhoz) az, hogy ANSI kódolással kell elmenteni a Jegyzettömbben.
  • Sok hexa editor meg tudja mutatni a fájlok tartalmát, a leggyakoribb szövegszerkesztők viszont elrejtik a BOM-ot.

Kapcsolódó bejegyzések

Hibaüzenetek

Webtárhely

2016/05/03 14:53  
2014/03/20 21:28  
2014/03/20 21:28  
2014/03/20 21:28  
2016/05/03 14:53  
2016/05/03 14:53  
2014/03/20 21:28  
2014/03/20 21:28  
2016/05/03 14:53  
2014/03/20 21:28  
2014/03/20 21:28  
2014/03/20 21:28  
2016/05/03 14:53  
2014/03/20 21:28  
2014/03/20 21:28  
2016/05/03 14:53  
2014/03/20 21:28  
2014/03/20 21:28  
2014/03/20 21:28  
2014/03/20 21:28  
2014/03/20 21:28  
2014/03/20 21:28  
2014/03/20 21:28  
2014/03/20 21:28  
2014/03/20 21:28  
2014/03/20 21:28  
2014/03/20 21:28  
Print/export
QR Code
QR Code UTF-8 fájlok és a BOM (generated for current page)