UTF FIX BOM
Některé editory vkládají na začátek souboru tzv. BOM (Byte Order Mark). Kvůli BOM může zařvat zaslání hlavičky a přesto, že jste si jisti, že nikde ve skriptu nic dříve na výstup nejde před zasláním header(), přece tam někdě něco neviditelného je. A jak se toho zbavit?
BOM (Byte Order Mark) se používá k určení o jaké UTF kódování se v souboru jedná, zda je použito UTF-8, UTF-16, UTF-32 a další.
V praxi obvykle při psaní skriptů BOM potřebovat nebudeme, potřeboval jsem to snad jen jednou a to pro Fussion Chart grafy definované xml souborem (ten musel začínat BOM znaky).
Otestovat jeslti v souboru je BOM můžeme snadno:
- $bom = fread($file, 3);
- if ($bom == ( chr(0xEF) . chr(0xBB) . chr(0xBF) )) {
- je tam!
V příkladech ke stažení pak najdete skript, který když umístíte nad všechny soubory, které chcete zkontrolovat a spustíte ho, tak projde rekurzivně jeden soubor za druhým (včetně podadresářů) a když zjistí, že je v souboru BOM, tak soubor uloží znovu, ale bez BOM.
Názvy souborů, které obsahovaly BOM vypíše na obrazovku. Pozor pokud je opravdu nějaký důvod k BOM tak tato operace je nevratně odstraní!
komentáře
RSS Komentáře
netbeans bohužel nemá :( nebo jsem to alespoň nenašel
a detekovat kódování co vím, také neumí, detekuje na základě kódování projektu
jinak jde o to, odhalit tuto hlavičku v sadě stovek souborů, což by s editorem mohl být trochu problém
2B vs. 3B zkusme třeba wikipedii



Poriadny editor má možnosť túto UTF hlavičku vypnúť. Štandardne je myslím zvyčajne vypnutá a dobrý editor si kódovanie súboru vie detekovať ako napr. PSPad. A pokiaľ sa dobre pamätám, UTF hlavička má len 2 B, nie 3.