Maison  >  Article  >  développement back-end  >  Les balises HTML Meta et Link générées par PHP se trouvent dans la balise body et il y a une ligne vide en haut.

Les balises HTML Meta et Link générées par PHP se trouvent dans la balise body et il y a une ligne vide en haut.

高洛峰
高洛峰original
2017-01-21 10:03:531016parcourir

1. Le code HTML généré à l'aide du modèle smarty en php a une ligne vide en haut du navigateur

2 Utilisez Firedebug pour constater que les balises méta et de lien sont dans la balise body <.>
Natif Il fonctionne bien sur wmap, mais le service envoyé au serveur distant est IASP, et le bug ci-dessus apparaîtra

J'ai regardé le fichier source et le texte est le même. Mais lors de l'enregistrement, cela provoque un problème d'encodage. Il s'agit probablement d'un problème utf-8.

J'ai cherché en ligne et j'ai découvert qu'il s'agissait d'un problème de nomenclature utf-8.

Solution : Utiliser. UltraEdit32 pour modifier le fichier de modèle intelligent qui est le fichier de modèle référencé (comme inclure l'en-tête, le pied de page et d'autres fichiers) Enregistrez le tout en tant que fichier utf-8 sans nomenclature

Autres instructions supplémentaires :
<.>La page est encodée en UTF8, et l'en-tête et la fin utilisent la méthode du modèle contenant le document. Par conséquent, l'en-tête et la fin sont gratuits. Il y a une ligne vierge supplémentaire d'environ 10 pixels de chaque côté, et rien.

La raison est qu'ils sont tous codés en utf8. Lors de l'inclusion de documents, le flux binaire final contient plusieurs balises de nomenclature UTF8. IE ne peut pas analyser normalement les pages contenant plusieurs balises de nomenclature UTF8 et les remplace directement par celles réellement affichées. . Entrez, ce qui entraîne une ligne vide, mais Firefox n'a pas ce problème.

Par conséquent, si le modèle utilise la méthode incluse et contient plusieurs documents utf8 et doit être enregistré avec ultraedit, sélectionnez la fonction Enregistrer sous et enregistrez-le au format utf8 sans nomenclature.

De plus, si la page chinoise a la balise title dans la balise head html, placez-la devant 4dca1b2d3b36577ce5be8e81545f17da entraînera une page blanche.

Par conséquent, les pages utf8 doivent utiliser l'ordre standard

En-tête BOM : xEFxBBxBF Les scripts PHP 4 et 5 ignorent toujours la BOM, ils sont donc affichés directement avant l'analyse.
<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>

Il y a une description spéciale de ce problème dans la FAQ standard de w3.org :

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

Le les détails sont les suivants :

Il existe un caractère appelé "ZERO WIDTH NO-BREAK SPACE" dans l'encodage UCS, et son encodage est FEFF. FFFE est un caractère qui n'existe pas dans UCS, il ne devrait donc pas apparaître dans la transmission réelle. La spécification UCS recommande de transmettre le caractère "ZERO WIDTH NO-BREAK SPACE" avant de transmettre le flux d'octets. De cette façon, si le récepteur reçoit FEFF, cela indique que le flux d'octets est Big-Endian ; s'il reçoit FFFE, cela indique que le flux d'octets est Little-Endian. Par conséquent, le caractère "ZERO WIDTH NO-BREAK SPACE" est également appelé BOM.

UTF-8 ne nécessite pas de nomenclature pour indiquer l'ordre des octets, mais peut utiliser la nomenclature pour indiquer la méthode d'encodage. Le codage UTF-8 du caractère "ZERO WIDTH NO-BREAK SPACE" est EF BB BF. Ainsi, si le récepteur reçoit un flux d'octets commençant par EF BB BF, il sait qu'il est codé en UTF-8.

Windows utilise BOM pour marquer la méthode d'encodage des documents texte. Système : WindowsXP Professionnel, jeu de caractères par défaut : chinois

1) bloc-notes : peut identifier automatiquement le document au format d'encodage utf-sans BOM 8, mais vous ne pouvez pas contrôler s'il faut ajouter une nomenclature lors de l'enregistrement du document. Si vous enregistrez le document, la nomenclature sera ajoutée uniformément.

2) editplus : ne peut pas reconnaître automatiquement les documents au format d'encodage UTF-8 sans BOM Lors de l'enregistrement du document, sélectionnez le format UTF-8 et n'écrira pas l'en-tête de BOM dans l'en-tête du document. 3) UltraEdit : La fonction la plus puissante pour l'encodage de caractères, elle peut identifier automatiquement les documents UTF-8 avec BOM et sans BOM (peut être configuré lors de l'enregistrement, vous pouvez choisir d'ajouter ou non une BOM via la configuration
(Attention particulière). doit être payé sur Oui, lors de l'enregistrement d'un document nouvellement créé, vous devez choisir de l'enregistrer au format utf-8 no bom)

Plus tard, j'ai découvert que le Bloc-notes prend également mieux en charge utf-8 bom, et Je le recommande à tout le monde.

Plus de balises méta et de lien html générées par php se trouvent dans la balise body. Il y a une ligne vide en haut. Pour les articles connexes, veuillez faire attention au site Web chinois de PHP !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn