表紙ソフトウェアチュートリアルブラウザはどのようにして CSS ドキュメントのエンコーディングを取得しますか?
ブラウザはどのようにして CSS ドキュメントのエンコーディングを取得しますか?

ブラウザが CSS ドキュメントのエンコーディングを取得することは、HTML ドキュメントのエンコーディングを取得することよりもはるかに複雑です。エンコーディングを設定できる場所は、ResponseHeader の Content-type フィールドであり、リンク タグでもエンコーディングを設定できます。 charset 属性、CSS ドキュメント、そして最後にデフォルトのエンコーディング ドキュメントも設定できます。

影響

CSS ドキュメント内のエンコード認識エラーが正しい場合、どのような影響がありますか?英語の文字は正常に認識されますが、中国語の文字は文字化けして表示されます。これは主に中国語フォントが使用されていることが原因で、ページに表示されている中国語フォントは英語フォントです(コンテンツは中国語のままです)。フォントが変わります)。

ブラウザはどのような順序で CSS ドキュメントのエンコーディングを取得しますか?

[1] CSS 2.1 仕様によれば、外部 CSS ファイルのエンコーディングは次の優先順位に従って決定される必要があります。

1. HTTP 応答ヘッダーの「Content-Type」フィールドの「charset」パラメータで指定されたエンコーディング。

2. @charset によって定義された BOM および/またはエンコーディング。

3.<link charset="">またはリンク メカニズムによって提供されるその他のメタデータ (存在する場合)。

4. この CSS ファイルの HTML または別の CSS ファイル (存在する場合) で決定されたエンコーディングを導入します。

5. 上記の手順でエンコードが判断できない場合は、UTF-8 であるとみなします。


BOM からエンコーディングを取得するメソッドを送信します (C#):

/// <summary> /// 从字节流判断编码(返回null是不能判断出编码) /// </summary> /// <param name="bt">输入字节流</param> /// <returns></returns> internal static string GetEncodingByByte(byte[] bt) { //带BOM的utf-8 var utf8 = new byte[] { 0xEF, 0xBB, 0xBF }; if (bt[0] == utf8[0] && bt[1] == utf8[1] && bt[2] == utf8[2]) { return "utf-8"; } //UTF-32-BE var utf32Be = new byte[] { 0x00, 0x00, 0xFE, 0xFF }; if (bt[0] == utf32Be[0] && bt[1] == utf32Be[1] && bt[2] == utf32Be[2] && bt[3] == utf32Be[3]) { return "utf-32"; } //UTF-32-LE var utf32Le = new byte[] { 0xFF, 0xFE, 0x00, 0x00 }; if (bt[0] == utf32Le[0] && bt[1] == utf32Le[1] && bt[2] == utf32Le[2] && bt[3] == utf32Le[3]) { return "utf-32"; } //UTF-32-2143 var utf322143 = new byte[] { 0x00, 0x00, 0xFF, 0xFE }; if (bt[0] == utf322143[0] && bt[1] == utf322143[1] && bt[2] == utf322143[2] && bt[3] == utf322143[3]) { return "utf-32"; } //UTF-32-3412 var utf323412 = new byte[] { 0xFE, 0xFF, 0x00, 0x00 }; if (bt[0] == utf323412[0] && bt[1] == utf323412[1] && bt[2] == utf323412[2] && bt[3] == utf323412[3]) { return "utf-32"; } //UTF-16-BE var utf16Be = new byte[] { 0xFE, 0xFF }; if (bt[0] == utf16Be[0] && bt[1] == utf16Be[1]) { return "utf-16"; } //UTF-16-LE var utf16Le = new byte[] { 0xFF, 0xFE }; if (bt[0] == utf16Le[0] && bt[1] == utf16Le[1]) { return "utf-16"; } return null; }
ソフトウェア アプリケーション: フロントエンド テンプレートのダウンロード、オフライン Web ブラウジング。注: このソフトウェアはハッカー プログラムではないため、バックグラウンド データをダウンロードすることはできません。
免責事項:本サービスは、個人的な学習、研究、鑑賞、その他の非営利または非営利の目的を目的としていますが、同時に著作権法およびその他の関連法の規定を遵守する必要があり、権利を侵害してはなりません。この Web サイトおよび関連する権利所有者の法的権利。このサイトのツールの使用に伴うリスクは、このソフトウェアとは何の関係もありません。
Copyright © 2019-2024 Rabbit Software All Rights Reserved 広東省 ICP No. 19111427-2
チュートリアル情報 ユーザーマニュアル ウェブサイトのトピックス