Heim  >  Artikel  >  Backend-Entwicklung  >  Die von PHP generierten HTML-Meta- und Link-Tags befinden sich im Body-Tag und oben befindet sich eine Leerzeile.

Die von PHP generierten HTML-Meta- und Link-Tags befinden sich im Body-Tag und oben befindet sich eine Leerzeile.

高洛峰
高洛峰Original
2017-01-21 10:03:531000Durchsuche

1. Der mit der Smarty-Vorlage in PHP generierte HTML-Code enthält oben im Browser eine leere Zeile

2 🎜>
Nativ Es läuft einwandfrei auf wmap, aber der an den Remote-Server gesendete Dienst ist IASP, und der obige Fehler wird angezeigt.

Ich habe mir die Quelldatei angesehen und der Text ist derselbe. Beim Speichern tritt jedoch wahrscheinlich ein UTF-8-Problem auf.

Ich habe online gesucht und festgestellt, dass es sich um ein UTF-8-Stücklistenproblem handelt UltraEdit32 zum Bearbeiten der Smarty-Vorlagendatei, bei der es sich um die referenzierte Vorlagendatei handelt (z. B. Kopf- und Fußzeile usw.). Speichern Sie alles als UTF-8-Datei ohne Stückliste.

Weitere ergänzende Anweisungen:

Die Seite ist in UTF8 codiert und die Kopfzeile und das Ende verwenden die Methode der Vorlage, die das Dokument enthält. Daher gibt es auf jeder Seite eine zusätzliche Leerzeile von etwa 10 Pixeln.

Der Grund dafür ist, dass sie alle in utf8 codiert sind. Beim Einbinden von Dokumenten enthält der endgültige Binärstream mehrere UTF8-Stücklisten-Tags. IE kann Seiten mit mehreren UTF8-Stücklisten-Tags nicht normal analysieren und ersetzt sie direkt durch die tatsächlich angezeigten . Enter, was zu einer Leerzeile führt, aber Firefox hat dieses Problem nicht.

Wenn die Vorlage daher die enthaltene Methode verwendet und mehrere utf8-Dokumente enthält und mit ultraedit gespeichert werden muss, wählen Sie die Funktion „Speichern unter“ und speichern Sie sie im utf8-Format ohne Stücklistenformat.

Wenn die chinesische Seite außerdem das Title-Tag im HTML-Head-Tag hat, platzieren Sie es vor 64c568af9db56c2d0473b2153e0f8747 führt zu einer leeren Seite.

Daher sollten utf8-Seiten die Standardreihenfolge


BOM-Header verwenden: xEFxBBxBF PHP-Skripte 4 und 5 ignorieren immer noch BOM, sodass sie direkt vor dem Parsen ausgegeben werden.

<meta http-equiv=”Content-type” Content=”text/html; Charset=UTF-8″ /> 
<meta http-equiv=”Content-language” Content=”zh-CN” /> 
<meta name=”robots” Content=”index,follow” /> 
<meta name=”keywords” Content=”" /> 
<meta name=”desCription” Content=”" /> 
<meta name=”rating” Content=”general” /> 
<meta name=”author” Content=”" /> 
<meta name=”Copyright” Content=”" /> 
<meta name=”generator” Content=”" /> 
<title></title>
Es gibt eine spezielle Beschreibung dieses Problems in den w3.org-Standard-FAQ:


www.w3.org/International/questions/qa-utf8-bom

Die Details sind wie folgt:

In der UCS-Codierung gibt es ein Zeichen namens „ZERO WIDTH NO-BREAK SPACE“, und seine Codierung ist FEFF. FFFE ist ein Zeichen, das in UCS nicht existiert und daher in der tatsächlichen Übertragung nicht erscheinen sollte. Die UCS-Spezifikation empfiehlt, dass wir vor der Übertragung des Bytestreams das Zeichen „ZERO WIDTH NO-BREAK SPACE“ übertragen. Wenn der Empfänger FEFF empfängt, zeigt er auf diese Weise an, dass der Bytestrom Big-Endian ist. Wenn er FFFE empfängt, zeigt er an, dass der Bytestrom Little-Endian ist. Daher wird char „ZERO WIDTH NO-BREAK SPACE“ auch BOM genannt.

UTF-8 erfordert keine Stückliste zur Angabe der Bytereihenfolge, kann die Stückliste jedoch zur Angabe der Kodierungsmethode verwenden. Die UTF-8-Kodierung des Zeichens „ZERO WIDTH NO-BREAK SPACE“ ist EF BB BF. Wenn der Empfänger also einen Bytestrom empfängt, der mit EF BB BF beginnt, weiß er, dass dieser UTF-8-codiert ist.

Windows verwendet BOM, um die Kodierungsmethode von Textdokumenten zu markieren. System: WindowsXP Professional, Standardzeichensatz: Chinesisch

1) Notizblock: kann UTF-Dokumente ohne BOM 8-Kodierungsformat automatisch identifizieren. Beim Speichern des Dokuments können Sie jedoch nicht steuern, ob eine Stückliste hinzugefügt werden soll. Wenn Sie das Dokument speichern, wird die Stückliste einheitlich hinzugefügt.

2) editplus: Dokumente im UTF-8-Kodierungsformat ohne Stückliste können nicht automatisch erkannt werden. Wählen Sie beim Speichern des Dokuments das UTF-8-Format aus und schreiben Sie keinen Stücklistenkopf in den Dokumentkopf 3) UltraEdit: Die leistungsstärkste Funktion für die Zeichenkodierung. Sie kann UTF-8-Dokumente automatisch mit und ohne Stückliste identifizieren (kann konfiguriert werden). Beim Speichern können Sie auswählen, ob Stücklisten über die Konfiguration hinzugefügt werden sollen sollte auf Ja bezahlt werden, wenn Sie ein neu erstelltes Dokument speichern, müssen Sie auswählen, dass es im UTF-8-BOM-Format gespeichert werden soll)

Später fand ich heraus, dass Notepad ++ auch UTF-8 BOM besser unterstützt , und ich empfehle jedem, es zu benutzen.

Weitere von PHP generierte HTML-Meta- und Link-Tags. Oben befindet sich eine Leerzeile. Für verwandte Artikel beachten Sie bitte die PHP-Chinese-Website.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn