Kodierung eines Strings als UTF-8 mit BOM in PHP

Lesezeit: 2 Minuten

Benutzer-Avatar
Jeano

Wie kann ich PHP zwingen, die BOM hinzuzufügen, wenn ich utf8_encode verwende?

Folgendes versuche ich zu tun:

$zip->addFromString($filename, utf8_encode($xml));

Leider (für mich) wird das Ergebnis am Anfang nicht die Stücklistenmarkierung haben.

Haben Sie versucht, selbst einen hinzuzufügen?

Das UTF-8-Stückliste scheint zu sein 0xEF 0xBB 0xBFdamit Sie es an Ihrer Schnur befestigen können nach Umwandlung in UTF-8.

$utf8_with_bom = chr(239) . chr(187) . chr(191) . $utf8_string;

Pass aber auf. utf8_encode möchte einen ISO-8859-1-String. Wenn Sie mit XML arbeiten, vergewissern Sie sich, dass XML dies nicht ist schon UTF-8 kodiert. Die Kommentare in der Dokumentation deuten darauf hin, dass die Funktion auf verschiedene lustige Arten kaputt ist, also sollten Sie sie nicht herumwerfen, es sei denn, Sie kennt dass du es brauchst.

Denken Sie daran, dass PHP-Strings einfach dumme, unwissende Bytes sind. Sie haben keinen angehängten Zeichensatz. Wenn die Daten in der Zeichenfolge also bereits UTF-8 sind, müssen Sie die Konvertierung nicht ausführen.

Auch der verlinkte Wikipedia-Artikel sagt Folgendes:

Während der Unicode-Standard Stücklisten in UTF-8 zulässt, es erfordert oder empfiehlt es nicht. Die Byte-Reihenfolge hat in UTF-8 keine Bedeutung Eine BOM dient also nur dazu, einen Textstream oder eine Datei als UTF-8 zu identifizieren oder dass sie aus einem anderen Format konvertiert wurde, das eine BOM hat.

Sie müssen sich wahrscheinlich nicht um den BOM-Stepdance kümmern.

  • Ich hatte ein Problem, bei dem Excel meine UTF-8-CSV-Datei ohne die BOM nicht korrekt öffnete, sodass sie möglicherweise nicht erforderlich ist, aber sicherlich einen Unterschied machen kann.

    – BioPanda

    5. Juli 2013 um 8:46 Uhr

  • Sie können die Zahl dadurch weniger “magisch” erscheinen lassen chr(0xEF).chr(0xBB).chr(0xBF) – Auf diese Weise können Sie sehen, dass es sich um ein Hex handelt, und von dort aus besser verstehen, dass es sich um die Stückliste handelt.

    – Niet the Dark Absol

    18. Juli 2014 um 15:37 Uhr

  • Wenn Sie einen alten Editor verwenden, z. B. EditPlus, kann die Funktion „in Datei suchen“ nur Dateien mit fremden Zeichen suchen und erkennen, die in utf8+bom codiert sind.

    – Scott Chu

    19. April 2016 um 9:03 Uhr

  • Beachten Sie, dass UTF8 BOM und Codierung nicht funktionieren, damit die CSV-Datei in Excel für Mac funktioniert. Sie müssen Ihre Daten in UTF16-LE konvertieren und Fügen Sie eine UTF16-LE-BOM hinzu – stackoverflow.com/a/16766198/324220

    – Lukas Ramischwili

    30. März 2017 um 13:57 Uhr

  • Ich verspreche dir mein erstgeborenes Kind. Vielen Dank.

    – Kenny Wyland

    3. August 2018 um 20:25 Uhr

1047610cookie-checkKodierung eines Strings als UTF-8 mit BOM in PHP

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy