BOM (Byte Order Mark) ist eine Standardmarkierung, die zur Identifizierung der Kodierung im UTF-Kodierungsschema verwendet wird. In UTF-16 war es ursprünglich FF FE und in UTF-8 wird es zu EF BB BF. Dieses Flag ist optional und da UTF8-Bytes keine Reihenfolge haben, kann es verwendet werden, um zu erkennen, ob ein Bytestrom UTF-8-codiert ist. Microsoft führt diese Erkennung durch, manche Software tut dies jedoch nicht und behandelt es als normales Zeichen. Microsoft fügt vor seinen eigenen UTF-8-Textdateien drei Bytes EF BB BF hinzu. Programme wie Notepad unter Windows verwenden diese drei Bytes, um zu bestimmen, ob eine Textdatei ASCII oder UTF-8 ist. Dies ist jedoch nur eine von Microsoft im Geheimen vorgenommene Markierung. Andere Plattformen haben keine solche Markierung für UTF-8-Textdateien. Das bedeutet, dass eine UTF-8-Datei eine BOM haben kann oder auch nicht. Wie kann man sie also unterscheiden? Drei Methoden. 1. Öffnen Sie die Datei mit UltraEdit-32, wechseln Sie in den hexadezimalen Bearbeitungsmodus und prüfen Sie, ob der Dateikopf EF BB BF enthält. 2. Öffnen Sie es mit Dreamweaver, überprüfen Sie die Seiteneigenschaften und sehen Sie nach, ob vor „Unicode-Signatur-BOM einschließen“ ein Häkchen gesetzt ist. 3. Öffnen Sie die Datei mit dem Windows-Editor, wählen Sie „Speichern unter“ und prüfen Sie, ob die Standardkodierung der Datei UTF-8 oder ANSI ist. Wenn es ANSI ist, wird die Datei kein BOM haben. Ich habe html_header.php in der Zen Cart-Vorlagendatei gefunden und festgestellt, dass die Datei kein BOM hatte. Ich habe sie mit UltraEdit-32 gespeichert, das BOM hinzugefügt und dann html_header.php hochgeladen. Alles war normal. Beachten Sie, dass beim Konvertieren einer gb2312-Datei in eine UTF-8-Datei mit Convertz die Standardeinstellung darin besteht, BOM nicht einzuschließen. Die oben genannten verstümmelten Zeichen können ohne BOM erscheinen. Wenn BOM jedoch enthalten ist, sollten Sie mit PHP-Include-Dateien vorsichtig sein, da EF BB BF vor dem PHP-Bytestream hinzugefügt wird. Die vorherige Ausgabe auf dem Display kann zu Programmfehlern führen. Eine Lösung besteht darin, alle enthaltenen Dateien als ANSI zu speichern, und die Hauptdatei kann UTF-8 sein. Um die BOM aus einer Datei zu entfernen, öffnen Sie sie mit UlterEdit, wechseln Sie in den hexadezimalen Bearbeitungsmodus, ersetzen Sie die ersten drei Bytes (das verdammte EF BB BF) durch 20, speichern Sie die Datei (denken Sie daran, beim Speichern die automatische Sicherungsfunktion auszuschalten), wechseln Sie dann in den Standardbearbeitungsmodus und entfernen Sie die ersten drei Leerzeichen. Ich habe auch einiges über die Kodierung gelernt: Die sogenannten in Unicode gespeicherten Dateien sind eigentlich UTF-16, was zufällig dasselbe ist wie der Unicode-Code, aber konzeptionell sind Unicode und UTF zwei verschiedene Dinge. Unicode ist ein Darstellungsschema für die Speicherkodierung und UTF ist ein Schema zum Speichern und Übertragen von Unicode. UTF-16 ist in zwei Typen unterteilt: High Byte First (LE) und High Byte Last (BE). Zur offiziellen UTF-Kodierung gehört auch UTF-32, welches ebenfalls in LE und BE unterteilt wird. Zur nicht-Unicode-offiziellen UTF-Kodierung gehört auch UTF-7, das vor allem für die E-Mail-Übertragung genutzt wird. Der Einzelbyte-Teil von UTF-8 ist mit ISO-8859-1 kompatibel. Dies liegt hauptsächlich daran, dass einige alte Systeme und Bibliotheksfunktionen UTF-16 nicht richtig verarbeiten können und daher nicht mehr verwendet werden. Bei englischen Zeichen wird dadurch auch Dateispeicherplatz gespart (auf Kosten der Platzverschwendung bei nicht-englischen Zeichen). Bei Verwendung von iso-8859-1 werden sowohl utf8 als auch iso-8859-1 durch ein Byte dargestellt. Bei der Darstellung anderer Zeichen verwendet utf-8 zwei oder drei Bytes. |
<<: Three.js realisiert den dynamischen 3D-Logoeffekt von Facebook Metaverse
>>: Sammlung gemeinsamer DIV-Attribute
Voraussetzungen 1. Docker wurde auf dem lokalen C...
Umfeld Server: centos7 Kunde: Fenster Stellen Sie...
Inhaltsverzeichnis Einführung Beispiel: Ereignisd...
Geben Sie zunächst einen Code ein für(int i=0;i&l...
Formulare sind eine wichtige externe Form zur Imp...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis 1. Klasse 1.1 Konstruktor() 1....
Vorwort Kürzlich stieß ich auf eine Anforderung, ...
Was ist Volumen? „Volume“ bedeutet auf Englisch K...
[LeetCode] 183.Kunden, die nie bestellen Angenomm...
Wenn Sie den Text im Textarea-Eingabebereich umbre...
Vorwort Im vorherigen Artikel wurde Hadoop instal...
Inhaltsverzeichnis 1. Bedingte Zugriffsattribute ...
Was bedeutet Textfüllfarbe? Rein wörtlich bedeute...
Als Frontend-Neuling habe ich einige Tage am Front...