Huwa ħafna aktar ikkumplikat għall-browser li jikseb il-kodifikazzjoni tad-dokument CSS milli jikseb il-kodifikazzjoni tad-dokument HTML Il-post fejn jista 'jistabbilixxi l-kodifikazzjoni huwa l-qasam tat-tip tal-Kontenut ta' ResponseHeader biex tissettja l-kodifikazzjoni charset attribut, u d-dokument CSS jistgħu wkoll jiġu ssettjati kodifikazzjoni, u finalment dokument ta 'kodifikazzjoni default.
X'se jkun l-impatt jekk l-iżball ta' rikonoxximent tal-kodifikazzjoni fid-dokument CSS huwa korrett? Il-karattri Ingliżi jistgħu jiġu rikonoxxuti b'mod normali, iżda l-karattri Ċiniżi se jintwerew bħala karattri mħawda Dan huwa prinċipalment minħabba l-użu ta 'fonts Ċiniżi murija fuq il-paġna huma fonts Ingliżi (il-kontenut għadu biċ-Ċiniż, ngħid il-wiri tibdil tat-tipa).
Skont l-ispeċifikazzjoni [1] CSS 2.1, il-kodifikazzjoni ta' fajl CSS estern għandha tiġi determinata skont il-prijoritajiet li ġejjin:
1. Il-kodifikazzjoni speċifikata mill-parametru "charset" tal-qasam "Content-Type" fl-header tar-rispons HTTP.
2. BOM u/jew kodifikazzjoni definiti minn @charset.
3.<link charset="">
jew metadejta oħra pprovduta mill-mekkaniżmu ta’ rabta (jekk ikun hemm).
4. Introduċi l-kodifikazzjoni determinata fl-HTML ta' dan il-fajl CSS jew f'fajl CSS ieħor (jekk hemm wieħed).
5. Jekk il-kodifikazzjoni ma tistax tiġi determinata fil-passi ta 'hawn fuq, huwa preżunt li l-kodifikazzjoni hija UTF-8.
Ibgħat metodu biex tikseb il-kodifikazzjoni minn 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; }