UTF-8 BOM-Probleme, auf die man in WordPress achten sollte Ich bin sehr früh auf ein Problem gestoßen, nämlich dass nach der Installation eines bestimmten Plugins ein weißer Bildschirm erschien, nachdem ich zum Aktivieren klickte. Ich habe nie herausgefunden, was der Grund ist, und die vorherige Lösung ist, dass die Datei direkt in ASCII-Code übertragen wird, wenn keine chinesischen Zeichen enthalten sind. Als ich heute einen Blog für meinen Bruder gemacht habe, ist diese Situation wieder passiert. Nach langer Recherche habe ich schließlich die Antwort gefunden.
In der Unicode-Spezifikation gibt es ein Konzept von BOM. BOM – Byte Order Mark, das ist das Byte-Ordermark. Eine Anmerkung zum BOM finden Sie hier:
Im UCS-Code gibt es ein Zeichen namens "ZERO WIDTH NO-BREAK SPACE", das als FEFF codiert ist. FFFE ist ein nicht existierender Charakter in UCS, daher sollte er nicht in der eigentlichen Übertragung vorkommen. Die UCS-Spezifikation empfiehlt, das Zeichen "ZERO WIDTH NO-BREAK SPACE" vor der Übertragung des Bytestroms zu übertragen. So zeigt der Empfänger, wenn er eine FEFF erhält, an, dass der Bytestrom Big-End ist; Wenn FFFE empfangen wird, zeigt dies an, dass der Bytestream Little-Endian ist. Daher wird das Zeichen "ZERO WIDTH NO-BREAK SPACE" auch BOM genannt.
UTF-8 benötigt keinen BOM, der die Bytereihenfolge angibt, kann aber einen BOM verwenden, um anzugeben, wie es codiert ist. Die UTF-8-Codierung des Zeichens "ZERO WIDTH NO-BREAK SPACE" ist EF BB BF. Wenn der Empfänger also einen Bytestrom erhält, der mit EF BB BF beginnt, weiß er, dass es sich um eine UTF-8-Codierung handelt.
Windows verwendet den BOM, um zu markieren, wie Textdateien codiert sind.
Zusätzlich erklärt das FAQ-BOM auf der Unicode-Website den BOM ausführlich. Die offizielle natürliche Autorität, aber auf Englisch, scheint mühsamer zu sein.
In einer UTF-8-kodierten Datei nimmt der BOM drei Bytes ein. Wenn du Notepad benutzt, um eine Textdatei als UTF-8-Codierung zu speichern, öffne die Datei mit UE und wechsle in den hexadezimalen Bearbeitungsmodus, um das FFFE am Anfang zu sehen. Dies ist eine gute Möglichkeit, UTF-8-kodierte Dateien zu identifizieren; Software verwendet den Stücklisten, um festzustellen, ob die Datei UTF-8-codiert ist, und viele Software verlangen auch, dass die importierte Datei einen Stückliste haben muss. Es gibt jedoch immer noch viele Software, die BOM nicht erkennt. Als ich Firefox recherchierte, wusste ich, dass in frühen Versionen von Firefox Erweiterungen kein Stücklistenstück haben konnten, aber Firefox 1.5 und spätere Versionen haben begonnen, Stücklisten zu unterstützen. Jetzt habe ich herausgefunden, dass PHP auch keine BOM unterstützt.
PHP wurde ohne Berücksichtigung des BOM entwickelt, was bedeutet, dass die drei Zeichen des BOM am Anfang der UTF-8-kodierten Datei nicht ignoriert werden. Da es in sein muss Wie ich im Bo-Blog-Wiki gesehen habe, ist Bo-Blog, das ebenfalls PHP verwendet, ebenfalls von BOM beunruhigt. Ein weiteres Problem wird erwähnt: "Aufgrund der Einschränkung des COOKIE-Sendemechanismus können in den Dateien, die bereits einen BOM am Anfang dieser Dateien haben, keine COOKIEs gesendet werden (da PHP den Dateiheader bereits vor dem Versand des COOKIES gesendet hat), sodass die Login- und Logout-Funktionen ungültig sind. Alle Funktionen, die auf COOKIEs und SESSIONs angewiesen sind, sind ungültig. Dies sollte der Grund für die leere Seite im WordPress-Hintergrund sein, denn alle ausgeführten Dateien enthalten einen Stücklisten, und alle drei Zeichen werden verschickt, wodurch die Funktionalität, die von Cookies und Sitzungen abhängt, fehlschlägt.
Die Lösung besteht darin, die Datei als ASCII-Code zu speichern, wenn sie nur englische Zeichen (oder Zeichen in der ASCII-Codierung) enthält. Wenn Sie einen Editor wie UE verwenden, klicken Sie auf Datei->Convert->UTF-8 zu ASCII oder wählen Sie ASCII-Codierung in Save As aus. Wenn es ein Zeilenende im DOS-Format ist, kannst du es mit Notepad öffnen, auf Speichern als klicken und ASCII-Codierung auswählen. Wenn es chinesische Zeichen enthält, kannst du die Funktion 'Save as' UE verwenden und "UTF-8 no BOM" auswählen. Bitte beachten Sie das untenstehende Bild:
Laut den Anweisungen des Bo-Blog-Wikis: Editplus muss als GB und dann als UTF-8 gespeichert werden. Seien Sie jedoch vorsichtig, denn alle Charaktere, die nicht in der GBK-Codierung enthalten sind, gehen verloren. Wenn in der Datei einige nicht-chinesische Zeichen sind, verwenden Sie diese Methode nicht. (Aus diesem kleinen Aspekt ist UE - UltraEdite-32 tatsächlich viel besser als Editplus, Editplus ist zu leicht.)
Eine weitere Möglichkeit, die ich gefunden habe, ist der Dateieditor von WordPress. Diese Methode ist nicht eingeschränkt, und es ist nicht nötig, einen speziellen Editor herunterzuladen, schließlich benutzt jeder WordPress. Zuerst aktiviere die Schreibberechtigung der Datei, die du in FTP bearbeiten möchtest, gib dann den WordPress-Hintergrund ein – > Management-> Dateieditor, gib den Pfad zur Bearbeitung der Datei ein und klicke auf Datei bearbeiten. Du wirst die ersten drei Zeichen im angezeigten Bearbeitungsbildschirm nicht sehen können, aber das ist in Ordnung, positioniere deinen Cursor vor dem ersten Zeichen der gesamten Datei und drücke die Backspace-Taste. Okay, klicke auf Datei aktualisieren, aktualisiere sie in FTP, du siehst, dass die Datei 3 Bytes kleiner ist, und fertig.
Schließlich ist das ein großes Problem: Alle, die ihre eigenen Plugins schreiben, die Plugins anderer für ihren eigenen Gebrauch bearbeiten und die Vorlage anpassen müssen (dies wird von allen als benötigt geschätzt), sollten das oben genannte Wissen verstehen, um nicht überfordert zu werden, wenn es ein Problem gibt.
|