web-dev-qa-db-fra.com

Comment résoudre le problème "Avertissement de validation" Byte-Order Mark trouvé dans UTF-8 File "

J'ai une page xhtml validant sous xhtml doctype strict - mais, je reçois cet avertissement que j'essaie de comprendre - et je corrige. 

Juste, comment puis-je localiser ce "Byte-Order Mark" errant. J'édite mon fichier avec Visual Studio - je ne suis pas sûr que cela aide. 

Avertissement Byte-Order Mark trouvé dans le fichier UTF-8.

La marque de byte-order (BOM) Unicode dans les fichiers codés UTF-8 est connue pour causer des problèmes à certains éditeurs de texte et à des navigateurs plus anciens. Vous voudrez peut-être envisager d'éviter son utilisation jusqu'à ce qu'il soit mieux supporté.

38
rsturim

La partie localisation de votre question est simple: la marque byte-order mark (BOM) sera au tout début du fichier.

Lorsque vous modifiez le fichier, accédez à File | Advanced Save Options... et vous devriez trouver un menu déroulant "Codage" (avec un menu déroulant "Terminaisons"). Il est probablement configuré pour utiliser "Unicode (UTF-8 avec signature) - Codepage 65001". Si vous faites défiler un peu, vous pouvez trouver "Unicode (UTF-8 sans signature) - Codepage 65001". Cela devrait le faire (si vous voulez). Certains systèmes peuvent être perturbés par une nomenclature sur un fichier UTF-8, comme l’avertisseur l’indique.

Voir aussi cette note dans la FAQ du site Unicode sur les fichiers de nomenclature et UTF-8. Il n'a pas d'autre fonction que d'indiquer que le fichier est en fait UTF-8. En particulier, cela n'a aucun effet sur l'ordre des octets (la raison principale pour laquelle nous avons des nomenclatures), car l'ordre des octets de UTF-8 est fixe.

45
T.J. Crowder

Voici comment j'ai résolu ceci:

  1. Téléchargez et installez Notepad ++

  2. Ouvrez le fichier avec Notepad ++

  3. Dans le menu, sélectionnez "Encodage" et réglez-le sur "Encoder en UTF-8 sans nomenclature".

  4. Enregistrez le fichier et la nomenclature disparaîtra.

19
Taller Digital VW

Pour ceux qui utilisent Visual Studio et voient le point rouge gênant sur bitbucket en 2018, il suffit d'aller dans Visual Studio dans "Fichier" -> "Fichier.cshtml Enregistrer sous ..." et sélectionnez "Enregistrer avec codage ...":

 Save with encoding

Ensuite, un écran s'affichera pour vous permettre de modifier le codage. Essayez de regarder dans le bas de la liste jusqu'à ce que vous voyez "Unicode (UTF-8 sans signature) - Codepage 65001":

 enter image description here

Après cela, écrasez simplement votre fichier et chargez-le dans votre dépôt. La nomenclature disparaîtra.

J'espère que ça aide… .. Leo.

2
Leo

Dans Linux :

Ouvrez le fichier avec Geany .

Dans le menu " Dossier " décochez " Ecrire une nomenclature Unicode ".

Enregistrer le fichier.

0
japetko

Parfois, la nomenclature se trouve dans le texte, pas au début - si un fichier a été assemblé depuis un certain temps par php à partir d'autres fichiers, en utilisant par exemple include_once (). Pour le supprimer, supprimez la zone entre au moins un caractère avant la nomenclature et au moins un caractère après la nomenclature (au cas où). La position de la nomenclature peut être située dans les outils de développement F12 d'Internet Explorer et probablement Edge. Il est visualisé sous la forme d'un diamant noir/losange.

Visual Studio et WebMatrix peuvent enregistrer des fichiers avec ou sans signature (au début).

La nomenclature provoque des erreurs lors de la validation ( https://validator.w3.org/#validate_by_upload ) ou dans les consoles - </ HEAD> peut être traité comme un élément orphelin sans <HEAD>, alors qu'il est apparemment présent!:

Erreur: tête de balise d'extrémité perdue.

<BODY> en tant que deuxième <BODY>, lorsqu'un seul <BODY> existe et que tout est correct:

Erreur: Le corps de la balise de démarrage a été vu, mais un élément du même type était déjà ouvrir.

Et tout le document peut être vu sans DOCTYPE, quand BOM ou deux BOMS occupent la première ligne et que DOCTYPE est en deuxième ligne, avec un message similaire à celui-ci:

Erreur: Caractères non-espace trouvés sans voir un type de document auparavant . Attendu par exemple <! DOCTYPE html>.

Erreur: il manque une instance d'élément enfant dans la tête de l'élément Titre.

Erreur: Doctype égaré.

Erreur: balise de démarrage parasite html.

Erreur: tête de balise de départ parasite.

Erreur: nom d'attribut non autorisé sur la méta de l'élément à ce stade.

Erreur: il manque un ou plusieurs des éléments suivants dans la méta de l'élément attributs: itemprop, propriété.

Erreur: L'attribut http-equiv n'est pas autorisé sur la méta de l'élément à ce stade.

Erreur: il manque un ou plusieurs des éléments suivants dans la méta de l'élément attributs: itemprop, propriété.

Erreur: nom d'attribut non autorisé sur la méta de l'élément à ce stade.

Erreur: il manque un ou plusieurs des éléments suivants dans la méta de l'élément attributs: itemprop, propriété.

Erreur: la propriété d'attribut obligatoire est manquante dans le lien d'élément.

Erreur: nom d'attribut non autorisé sur la méta de l'élément à ce stade.

Erreur: il manque un ou plusieurs des éléments suivants dans la méta de l'élément attributs: itemprop, propriété.

Erreur: nom d'attribut non autorisé sur la méta de l'élément à ce stade.

Erreur: il manque un ou plusieurs des éléments suivants dans la méta de l'élément attributs: itemprop, propriété.

Erreur: nom d'attribut non autorisé sur la méta de l'élément à ce stade.

Erreur: il manque un ou plusieurs des éléments suivants dans la méta de l'élément attributs: itemprop, propriété.

Erreur: Le titre de l'élément n'est pas autorisé en tant qu'enfant du corps de l'élément dans cette le contexte. (Suppression d'autres erreurs de cette sous-arborescence.)

Erreur: le style d'élément n'est pas autorisé en tant qu'enfant du corps de l'élément dans cette le contexte. (Suppression d'autres erreurs de cette sous-arborescence.)

Erreur: tête de balise d'extrémité perdue.

Erreur: Le corps de la balise de démarrage a été vu, mais un élément du même type était déjà ouvrir.

Erreur fatale: Impossible de récupérer après la dernière erreur. Toute autre erreur sera Etre ignoré.

( https://validator.w3.org/#validate_by_uri )

Et flux de messages dans la console IE F12 Developer Tools:

HTML1527: DOCTYPE attendu. Envisagez d'ajouter un type de document HTML5 valide: "<! DOCTYPE html>".

HTML1502: DOCTYPE inattendu. Un seul DOCTYPE est autorisé et doit avoir lieu avant tout élément. 

HTML1513: Balise "<html>" supplémentaire trouvée. Une seule balise "<html>" doit exister par document.

HTML1503: Balise de début inattendue. HTML1512: balise de fin sans correspondance.

Tout ce qui est causé par une nomenclature au début. Et Debugger montre un losange noir dans la première ligne.

Les fichiers enregistrés avec signature, mais non assemblés par php ne causent pas de telles erreurs et les diamants noirs ne sont pas visibles dans le débogueur IE. Alors peut-être que php transforme BOM en quelque sorte. Il semble que le fichier php principal doit être sauvegardé avec une signature pour voir cela.

Ces caractères étranges apparaissent au début et/ou aux limites des fichiers fusionnés avec include_once () et ne sont pas visibles lorsque les fichiers sont enregistrés auparavant sans signature. C'est pourquoi il est question d'implication de la nomenclature.

J'ai remarqué tout cela avant-hier lorsque j'ai commencé à convertir mon site Web en HTML5 et à le valider.

La nomenclature peut également créer un petit retrait au début de la ligne. Deux fichiers contenant un texte identique mais un avec retrait.

0
darekk