Un editor esadecimale, o anche più semplicemente il programma od, sono in grado di mostrarci i byte inseriti. Prendiamo ad esempio un file che inizia così:
/* questo è il punto di avvio dell'applicazione
*/
require_once('config.php'); // inclusione del file di configurazione require_once('functions/generic_functions.php'); // inclusione...
Se con od diamo un'occhiata, ci rendiamo conto dei caratteri inseriti nelle prime posizioni:
$ od -a index.php | head 0000000 o ; ? < ? p h p cr nl cr nl sp sp / * 0000020 sp q u e s t o sp C ( sp i l sp p u 0000040 n t o sp d i sp a v v i o sp d e l 0000060 l ' a p p l i c a z i o n e cr nl 0000100 sp sp sp * / cr nl cr nl sp sp r e q u i 0000120 r e _ o n c e ( ' c o n f i g . 0000140 p h p ' ) ; sp sp / / sp i n c l u 0000160 s i o n e sp d e l sp f i l e sp d 0000200 i sp c o n f i g u r a z i o n e 0000220 cr nl sp sp r e q u i r e _ o n c e
Il file dovrebbe invece iniziare direttamente con il simbolo <, come qui:
$ od -a index.php | head 0000000 < ? p h p cr nl cr nl sp sp / * sp q u 0000020 e s t o sp C ( sp i l sp p u n t o 0000040 sp d i sp a v v i o sp d e l l ' a 0000060 p p l i c a z i o n e cr nl sp sp sp 0000100 * / cr nl cr nl sp sp r e q u i r e _ 0000120 o n c e ( ' c o n f i g . p h p 0000140 ' ) ; sp sp / / sp i n c l u s i o 0000160 n e sp d e l sp f i l e sp d i sp c 0000200 o n f i g u r a z i o n e cr nl sp 0000220 sp r e q u i r e _ o n c e ( ' f
Fortunatamente, possiamo facilmente cercare i file "incriminati" per sistemarli, se ne abbiamo bisogno.
Una pagina di stackoverflow abbonda di suggerimenti al riguardo: elegant-way-to-search-for-utf-8-files-with-bom.
Su LinuxAsk si trova poi il suggerimento più carino su come ottenere tutti i byte a partire dal quarto:
tail --bytes=+4 text.txt