web-dev-qa-db-ja.com

「UTF-8ファイルで見つかったバイト順マーク」検証警告を修正する方法

Xhtml strict doctypeで検証するxhtmlページがありますが、理解しようとしているこの警告が表示され、修正します。

ちょうど、この誤った「バイトオーダーマーク」を見つけるにはどうすればよいですか。 Visual Studioを使用してファイルを編集していますが、それが役立つかどうかわかりません。

UTF-8ファイルでバイト順マークが見つかりました。

UTF-8エンコードファイルのUnicodeバイトオーダーマーク(BOM)は、一部のテキストエディターや古いブラウザーで問題を引き起こすことが知られています。より適切にサポートされるまで、その使用を避けることを検討することができます。

39
rsturim

質問の場所の部分は簡単です。 byte-order mark (BOM)はファイルの最初にあります。

ファイルを編集するときは、File | Advanced Save Options...そして、「エンコード」ドロップダウンが(「行末」ドロップダウンとともに)表示されるはずです。おそらく「Unicode(署名付きUTF-8)-コードページ65001」を使用するように設定されています。少し下にスクロールすると、「Unicode(UTF-8署名なし)-コードページ65001」が見つかります。これでうまくいくはずです(必要な場合)。警告が示すように、一部のシステムはUTF-8ファイルのBOMによって混乱する場合があります。

また、UnicodeサイトのFAQ BOMおよびUTF-8ファイルについて)の このノート も参照してください。ファイルが実際に存在することを呼び出す以外の機能はありません。 、UTF-8。特に、UTF-8のバイトオーダーは固定されているため、バイトオーダー(BOMがある主な理由)には影響しません。

46
T.J. Crowder

これを修正した方法は次のとおりです。

  1. ダウンロードしてインストールします Notepad ++

  2. Notepad ++でファイルを開きます

  3. メニューで[エンコード]を選択し、[BOMなしのUTF-8でエンコード]に設定します

  4. ファイルを保存すると、BOMはなくなります。

21

2018年にbitbucketに迷惑な赤い点が表示されるVisual Studioを使用している場合は、Visual Studioに移動して[ファイル]-> [File.cshtml名前を付けて保存...]を選択し、[エンコード付きで保存...]を選択します。

Save with encoding

次に、「Unicode(署名なしのUTF-8)-コードページ65001」が表示されるまで、エンコードを変更し、リストを最後まで見下ろすことができるように画面がポップアップ表示されます。

enter image description here

この後、ファイルを上書きしてリポジトリにアップロードするだけで、BOMはなくなります。

それが役に立てば幸い。レオ。

3
Leo

Linux

Geanyでファイルを開きます。

メニューで "Dokument"チェックを外します "nicode BOMの書き込み"。

保存ファイル。

0
japetko

BOMは、先頭ではなくテキスト内にある場合があります。たとえば、include_once()を使用して、他のファイルからphpによってファイルがアセンブルされている場合。削除するには、BOMの前の少なくとも1文字とBOMの後に少なくとも1文字の間の領域を削除します(念のため)。 BOMの位置は、Internet ExplorerおよびおそらくEdgeのF12開発者ツールにあります。 ブラックダイヤモンド/菱形として視覚化されます。

Visual StudioおよびWebMatrixは、署名の有無にかかわらず(最初に)ファイルを保存できます。

BOMは、検証中( https://validator.w3.org/#validate_by_upload )またはコンソールでエラーを引き起こします-</ HEAD>は、明らかに存在する場合、<HEAD>のない孤立要素として扱うことができます! :

エラー:終了タグのヘッドが外れています。

<BODY>が2つ目の<BODY>として、<BODY>が1つだけ存在し、すべてが正しい場合:

エラー:開始タグの本文は表示されますが、同じタイプの要素が既に開いています。

また、BOMまたは2つのBOMSが1行目を占め、DOCTYPEが2行目にある場合、次のようなメッセージとともに、ドキュメント全体にDOCTYPEがないことがわかります。

エラー:最初にdoctypeが表示されずにスペース以外の文字が見つかりました。期待される<!DOCTYPE html>。

エラー:要素の頭に、子要素のタイトルの必須インスタンスがありません。

エラー:Doctypeが迷いました。

エラー:Stray start tag html。

エラー:開始タグの先頭が外れています。

エラー:この時点では属性名は要素メタで許可されていません。

エラー:要素のメタには、itemprop、propertyの1つ以上の属性がありません。

エラー:この時点では、要素のメタでは属性http-equivは許可されていません。

エラー:要素のメタには、itemprop、propertyの1つ以上の属性がありません。

エラー:この時点では属性名は要素メタで許可されていません。

エラー:要素のメタには、itemprop、propertyの1つ以上の属性がありません。

エラー:要素リンクに必要な属性プロパティがありません。

エラー:この時点では属性名は要素メタで許可されていません。

エラー:要素のメタには、itemprop、propertyの1つ以上の属性がありません。

エラー:この時点では属性名は要素メタで許可されていません。

エラー:要素のメタには、itemprop、propertyの1つ以上の属性がありません。

エラー:この時点では属性名は要素メタで許可されていません。

エラー:要素のメタには、itemprop、propertyの1つ以上の属性がありません。

エラー:このコンテキストでは、要素タイトルは要素本体の子として許可されていません。 (このサブツリーからのさらなるエラーの抑制。)

エラー:このコンテキストでは、要素スタイルは要素本体の子として許可されていません。 (このサブツリーからのさらなるエラーの抑制。)

エラー:終了タグのヘッドが外れています。

エラー:開始タグの本文は表示されますが、同じタイプの要素が既に開いています。

致命的なエラー:最後のエラーの後に回復できません。それ以上のエラーは無視されます。

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

そして、IE F12 Developer Toolsコンソールでのメッセージのストリーム:

HTML1527:DOCTYPEが必要です。有効なHTML5 doctype: "<!DOCTYPE html>"を追加することを検討してください。

HTML1502:予期しないDOCTYPE。許可されるDOCTYPEは1つのみであり、要素の前に指定する必要があります。

HTML1513:余分な「<html>」タグが見つかりました。ドキュメントごとに「<html>」タグが1つだけ存在する必要があります。

HTML1503:予期しない開始タグ。 HTML1512:一致しない終了タグ。

最初に1つのBOMによって引き起こされたすべて。そして、デバッガーは、最初の行に1つの黒い菱形を示します。

ファイルは署名付きで保存されますが、PHPでアセンブルされないため、このようなエラーは発生せず、黒のダイアモンドはIEデバッガーでは表示されません。これを確認するために署名付きで保存されました。

これらの奇妙な文字は、include_once()でマージされたファイルの先頭および/または境界で発生し、署名なしでファイルが保存される前に表示されません。これがBOMの関与を示す理由です。

私は、昨日、私のWebサイトをHTML5に変換して検証し始めたときに、このすべてに気づきました。

BOMは、行頭に小さなインデントを作成することもできます。同一のテキストを含むがインデントを含む2つのファイル。

0
darekk