Co je to BOM?
Značka pořadí bajtů (BOM), nebo také značka pořadí bajtů, je speciální značka vložená do souboru Unicode kódovaného pomocí UTF-8, UTF16 nebo UTF-32 pro identifikaci typu kódování souboru Unicode. Pro UTF-8 není BOM vyžadován, protože se používá k označení typu kódování a pořadí bajtů (big-endian nebo little-endian) vícebajtového kódovaného souboru. V UTF-8 je počet bitů zakódovaných pro každý znak vyjádřen prvním bajtem a mezi big-endianem a little-endianem není rozdíl. UTF-8 nevyžaduje kusovník, ačkoli standard Unicode umožňuje použití BOMů v UTF-8. Proto je UTF-8 bez BOM standardní formou a je to hlavně zvyk Microsoftu umisťovat BOM do souboru UTF-8 (mimochodem: je také zvykem Microsoftu volat UTF-16 s BOM "Unicode" bez zacházení do detailů). Kusovníky jsou připraveny pro UTF-16 a UTF-32 pro označení pořadí bajtů. Microsoft používá BOM v UTF-8, protože umožňuje jasné rozlišení mezi kódováním UTF-8 a ASCII, jinak by otevření CSV souboru v Excelu mohlo být zkreslené. Takový soubor však může způsobit problémy i v jiných operačních systémech než Windows. Rozdíl mezi "UTF-8" a "UTF-8 s BOM" je v tom, zda BOM existuje, nebo ne. To znamená, zda je na začátku souboru U+EFF. Webové kódy UTF-8 by neměly používat kusovníky, jinak jsou chyby běžné. Při výstupu CSV souboru z http odpovědi není ve výchozím nastavení zahrnut na utf8 BOM, ale Windows Excel používá BOM k potvrzení kódování UTF8 a všechny musí BOM zapsat na začátek souboru.
Když poprvé vyvíjíte generátor Java kódu, dáte soubor přímoZápis do souboru UTF-8, který obsahuje tag BOMTo povede k chybám v balení, a to následovně:
Nelegální postavy: '\ufeff'
Jak mohu pomocí .NET / C# zjistit, zda soubor obsahuje tagy BOM? , kód je následující:
Kolegové, připojeniPřevádí formát BOM UTF-8 na formát UTF-8 (bez tagů BOM), celý kód je následující:
(Konec)
|