Dem BOM auf der Spur
Kommentare

In internationalen Projekten kann es passieren, dass man gerne einmal mit UTF-8, genauer gesagt dem BOM, (byte order mark) aneinander gerät. Danne Lundqvist möchte dafür nun einen Lösungsansatz bieten.

Das

In internationalen Projekten kann es passieren, dass man gerne einmal mit UTF-8, genauer gesagt dem BOM, (byte order mark) aneinander gerät. Danne Lundqvist möchte dafür nun einen Lösungsansatz bieten.

Das BOM ist eine Unicode-Signatur, die unter Umständen einer UTF-8-kodierten Datei vorangestellt sein kann. Wenn dem so ist, können PHP-eigene Funktionen wie zum Beispiel strlen() falsche Werte liefern, da sie die verwendeten Bytes eines Textes lesen. Auch Sicherheitslücken könnten durch die falsche Anwendung von htmlentities() auftreten. Man ist also gut beraten, so früh wie möglich zu wissen, womit man arbeitet.

Vor exakt diesem Problem stand auch Danne Lundqvist. Danne arbeitet in Schweden und hat viel mit Datenquellen aus ganz Europa zu tun. Da kann es beim Import von .csv-Dateien schon mal zu Schwierigkeiten kommen. Daher stellt er in seinem Artikel Detecting UTF BOM – byte order mark einen Lösungsansatz vor, mit dem sich die Signatur – falls vorhanden – entfernen lässt.

$str = file_get_contents('file.utf8.csv');
$bom = pack("CCC", 0xef, 0xbb, 0xbf);
if (0 == strncmp($str, $bom, 3)) {
	echo "BOM detected - file is UTF-8n";
	$str = substr($str, 3);
}  

Verbesserungswürdig, aber im Prinzip gilt: It’s as simple as that. Wer sich mehr mit dem Thema beschäftigen möchte, dem sei der Artikel UTF-8 für alle von Bettina Ramm ans Herz gelegt. Darin erklärt sie ausführlich, worauf man bei einer Umstellung auf UTF-8 achten sollte.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -