Určení kódování BOMem
Co je to BOM a jak nastavuje kódování pro správné zobrazování českých znaků.
Pro správné nastavení češtiny v HTML souborech jde mimo jiné použít tzv. BOM (Byte order mark). Jedná se o sekvenci neviditelných znaků na začátku souboru, která se obvykle používá k označení souboru v kódování UTF.
- Byte order mark – technický popis BOMu na české Wikipedii
Jak přidat/odebrat BOM
Sublime Text
V editoru Sublime Text je taková volba v nabídce File → Save with Encoding → UTF-8 with BOM.
PSPad
V PSPadu jde nastavit přidávání BOMu v Nastavení → Nastavení programu… → Program 2 → Ident. byty v kódování UTF-8.
Problémy BOMu v PHP
Používat BOM je problematické při programování v PHP, kdy může jeho užití způsobovat chybovou hlášku:
Warning:
Cannot add header information - headers already sent by
Případně při použití session:
Warning: session_start():
Cannot send session cookie - headers already sent by
Nebo při nastavení cookie:
Warning:
Cannot modify header information - headers already sent by
Nastavují-li se v PHP nějaké HTTP hlavičky (což nastane i při využívání cookie), je tak nutné učinit před vypsáním obsahu. Jelikož se sekvence BOMu nachází před začátkem PHP a BOM je považován za obsah, nejde podmínku hlaviček před obsahem v takovém případě splnit.
Symbolický zápis:
neviditelný BOM
<?php
// PHP kód nastavující hlavičky
Z tohoto důvodu je nejspíš lepší BOM nepoužívat a kódování určit v HTML meta značkou charset:
<meta charset="utf-8">
Nebo kódování a typ obsahu nastavit HTTP hlavičkou přímo v PHP:
<?php
header("Content-type: text/html; charset=utf-8");
Komentáře