Mis on BOM?
Baidijärjekord märk (BOM) ehk baidijärjekord on eriline märk, mis sisestatakse Unicode'i faili, mis on kodeeritud UTF-8, UTF16 või UTF-32-ga, et tuvastada Unicode'i faili kodeerimistüüpi. UTF-8 puhul ei ole BOM-i vaja, kuna seda kasutatakse mitmebaidilise kodeeritud faili kodeerimistüübi ja baitide järjekorra (big-endian või little-endian) märkimiseks. UTF-8-s väljendatakse iga tähemärgi jaoks kodeeritud bittide arv esimese baitiga ning big-endiani ja little-endiani vahel vahet ei ole. UTF-8 ei vaja BOM-i, kuigi Unicode standard lubab kasutada BOM-e UTF-8-s. Seetõttu on UTF-8 ilma BOM-ita standardvorm ning Microsoftil on peamiselt harjumus paigutada BOM UTF-8 faili (muide: Microsoftil on ka komme nimetada UTF-16 BOM-iga "Unicode'iks" ilma detailidesse laskumata). BOM-id valmistatakse ette UTF-16 ja UTF-32 jaoks, et tähistada baitide järjekorda. Microsoft kasutab BOM-i UTF-8-s, kuna see võimaldab selget vahet UTF-8 ja ASCII kodeerimise vahel, vastasel juhul võib CSV-faili avamine Excelis olla segane. Kuid selline fail võib põhjustada probleeme ka teistes operatsioonisüsteemides peale Windowsi. Erinevus "UTF-8" ja "UTF-8 koos BOM-iga" on selles, kas BOM on olemas või mitte. See tähendab, kas faili alguses on U+FEFF. UTF-8 veebikood ei tohiks kasutada BOM-e, vastasel juhul on vead tavalised. Kui CSV-faili väljastatakse http-vastusest, ei ole see vaikimisi kaasatud, kui see on seatud utf8-le BOM, aga Windows Excel kasutab BOM-i UTF8 kodeeringu kinnitamiseks ja kõik peavad kirjutama BOM-i faili algusesse.
Kui arendad esimest korda Java koodigeneraatorit, paned faili otseKirjuta UTF-8 faili, mis sisaldab BOM-sildiSee põhjustab pakendivigu, nagu järgmised:
Ebaseaduslikud tegelased: '\ufeff'
Kuidas kasutada .NET / C# faili, et kindlaks teha, kas fail sisaldab BOM-silte? , kood on järgmine:
Kolleegid, seotudTeisendab UTF-8 BOM formaadi UTF-8 (ilma BOM-siltideta) formaadiks, täiskood on järgmine:
(Lõpp)
|