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


