Brauzer üçin CSS resminama kodlamagyny almak has çylşyrymly, HTML resminamasyny kodlamagy almak, kodlamagy belläp biljek ýeri, kodlamagy kesgitlemek üçin “ResponseHeader” -iň Mazmun görnüşli meýdanydyr belginiň atributy we CSS resminamasy hem kodlaşdyrylyp bilner we ahyrynda deslapky kodlaýyş resminamasy.
CSS resminamasyndaky kodlamagy tanamak säwligi dogry bolsa, nähili täsir eder? Iňlis nyşanlaryny adaty tanap bolýar, ýöne hytaý nyşanlary hapa harplar hökmünde görkeziler. Bu, esasan, hytaý şriftleriniň ulanylmagy bilen baglanyşyklydyr (sahypada görkezilen hytaý şriftleri) şrift üýtgeýär).
[1] CSS 2.1 spesifikasiýasyna laýyklykda daşarky CSS faýlyny kodlamak aşakdaky ileri tutulýan ugurlara laýyklykda kesgitlenmeli:
1. HTTP jogap sözbaşysynda "Mazmun görnüşi" meýdançasynyň "ýazgy" parametri bilen kesgitlenen kodlama.
2. BOM we / ýa-da @ charset tarapyndan kesgitlenen kodlama.
3.<link charset="">
ýa-da baglanyşyk mehanizmi bilen üpjün edilen beýleki metadata (bar bolsa).
4. Bu CSS faýlyň HTML-de ýa-da başga bir CSS faýlynda kesgitlenen kodlamany tanyşdyryň (eger bar bolsa).
5. Kodlamagy ýokardaky ädimlerde kesgitläp bolmaýan bolsa, kodlamagyň UTF-8 bolandygy çak edilýär.
BOM-dan kodlamagy almagyň usulyny iberiň (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; }