理由もなくページに空白行が存在することがよくありますが、これは BOM (UTF-8) が原因であることがわかっています。 (UTF-8) の検出および削除方法。
下の図は、上記の状況が発生した後にfirebugで表示されたHTMLコードです。
図1
不可解なことに余分な空白行がありますが、ソースコードを見ると、空白行はありません。
私の最も一般的な方法は、php を使用して置き換えることです
BOM: ユニバーサル コード ファイル署名 BOM (バイト オーダー マーク、U+FEFF)
BOM の内容は、UNICODE がどのエンコーディングであるかを示すことができますが、受信したファイルを逆アセンブルして DB に書き込む必要があります。BOM を見るのは少し面倒です。
utf8_encode では、BOM の書き込み/削除をテストするために使用できるプログラムが 2 つありました。
書き込まれたファイルの内容の前にBOMを追加します
コードは次のとおりです | コードをコピー |
関数 writeUTF8File($filename,$content) |
BOM機能を削除
コードは次のとおりです | コードをコピー |
関数removeBOM($str = '') |
上記の BOM = Pack("CCC",0xef,0xbb,0xbf) なので、BOM を削除するには、上記の RemoveBOM 関数または次のいずれかを使用できます:
■str_replace("锘�", '', $bom_content);
■preg_replace("/^锘�/", '', $bom_content);
この文字列が UTF-8 であるかどうかを判断する関数も参照してください:
コードは次のとおりです | コードをコピー |
関数はUTF8($string)です |
Linuxシステムの問題を解決するにはシェルを使用してください
UTF-8 エンコーディングでの BOM の検出と削除について詳しく説明する前に、例でウォームアップしてみましょう:
コードは次のとおりです | コードをコピー |
shell -s http://www.bKjia.c0m/ | sed -n l 锘� $ |
上に示すように、最初の 3 バイトはそれぞれ 357、273、277 であり、8 進数の BOM です。
コードは次のとおりです | コードをコピー |
シェル>curl -s http://www.111cn.Net/head -C 00000000 ef bb bf 3c 21 44 4f 43 54 59 50 45 20 68 74 6d |... 00000010 6c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 |l パブリック "-//W3C| 00000020 2f 2f 44 54 44 20 58 48 54 4d 4c 20 31 2e 30 20 |//DTD XHTML 1.0 | 00000030 54 72 61 6e 73 69 74 69 6f 6e 61 6c 2f 2f 45 4e |移行//EN| 00000040 22 20 22 68 74 74 70 3a 2f 2f 77 77 77 2e 77 33 |" "http://www.w3| 00000050 2e 6f 72 67 2f 54 52 2f 78 68 74 6d 6c 31 2f 44 |.org/TR/xhtml1/D| 00000060 54 44 2f 78 68 74 6d 6c 31 2d 74 72 61 6e 73 69 |TD/xhtml1-transi| 00000070 74 69 6f 6e 61 6c 2e 64 74 64 22 3e 0d 0a |tional.dtd">..| |
上に示すように、最初の 3 バイトは EF、BB、BF であり、16 進数の BOM です。 注: サードパーティ Web サイトのページが使用されるため、サンプルが常に利用可能であるという保証はありません。 実際にプロジェクトを開発する場合、数百、数千のテキスト ファイルが BOM と混在している場合、BOM を含む UTF-8 テキスト ファイルが存在しない場合は、vi を使用して作成することができます。関連するコマンドは次のとおりです。
UTF-8 エンコーディングを設定します:
コードをコピー | |
コードをコピー | |
コードは次のとおりです | コードをコピー |
:爆弾を設定しない |
BOM のクエリ:
コードは次のとおりです | コードをコピー |
:爆弾を設置しますか? |
UTF-8 エンコーディングで BOM を検出するにはどうすればよいですか?
コードは次のとおりです | コードをコピー |
shell> grep -r -I -l $'^锘�' /path UTF-8 エンコードで BOM を削除するにはどうすればよいですか? shell> grep -r -I -l $'^锘�' /path xargs sed -i 's/^锘�//;q' |
推奨: SVN を使用する場合は、関連するコードをコミット前フックに追加して、BOM を排除できます。
コードは次のとおりです | コードをコピー |
#!/bin/bash リポス = "$1" SVNLOOK=/usr/bin/svnlook $($SVNLOOK が変更されました -t "$TXN" "$REPOS" | awk '/^[AU]/ {print $NF}') の FILE について
If $SVNLOOK cat -t "$TXN" "$REPOS" "$FILE" | then |
方法 3、Ultraedit エディターを使用してドキュメントを直接変更します
空白行を含むドキュメントを BOM 形式で保存します。
下の図は、ultraedit がドキュメントを保存するときのエンコード形式です:
図2
内部で UTF8 を選択します - BOM なし、すべてが解決されます